diff --git a/d2ast/keywords.go b/d2ast/keywords.go
index 65f67b775..a7ece2ef5 100644
--- a/d2ast/keywords.go
+++ b/d2ast/keywords.go
@@ -41,6 +41,7 @@ var CompositeReservedKeywords = map[string]struct{}{
"constraint": {},
"label": {},
"icon": {},
+ "multiple": {},
}
// StyleKeywords are reserved keywords which cannot exist outside of the "style" keyword
@@ -63,9 +64,10 @@ var StyleKeywords = map[string]struct{}{
"text-transform": {},
// Only for shapes
- "shadow": {},
- "multiple": {},
- "double-border": {},
+ "shadow": {},
+ "multiple": {},
+ "multiple.opacity": {},
+ "double-border": {},
// Only for squares
"3d": {},
diff --git a/d2compiler/compile.go b/d2compiler/compile.go
index 651238afe..51aae2a2a 100644
--- a/d2compiler/compile.go
+++ b/d2compiler/compile.go
@@ -763,6 +763,14 @@ func (c *compiler) compileStyleField(styles *d2graph.Style, f *d2ir.Field) {
c.errorf(f.LastRef().AST(), `invalid style keyword: "%s"`, f.Name.ScalarString())
return
}
+ if f.Map() != nil {
+ fields := f.Map().Fields
+ for i := 0; i < len(fields); i++ {
+ field := fields[i]
+ field.Name.SetString(f.Name.ScalarString() + "." + field.Name.ScalarString())
+ c.compileStyleField(styles, field)
+ }
+ }
if f.Primary() == nil {
return
}
@@ -797,6 +805,8 @@ func compileStyleFieldInit(styles *d2graph.Style, f *d2ir.Field) {
styles.ThreeDee = &d2graph.Scalar{MapKey: f.LastPrimaryKey()}
case "multiple":
styles.Multiple = &d2graph.Scalar{MapKey: f.LastPrimaryKey()}
+ case "multiple.opacity":
+ styles.MultipleOpacity = &d2graph.Scalar{MapKey: f.LastPrimaryKey()}
case "font":
styles.Font = &d2graph.Scalar{MapKey: f.LastPrimaryKey()}
case "font-size":
diff --git a/d2exporter/export.go b/d2exporter/export.go
index 56f4b9146..36114fc91 100644
--- a/d2exporter/export.go
+++ b/d2exporter/export.go
@@ -172,6 +172,9 @@ func applyStyles(shape *d2target.Shape, obj *d2graph.Object) {
if obj.Style.Multiple != nil {
shape.Multiple, _ = strconv.ParseBool(obj.Style.Multiple.Value)
}
+ if obj.Style.MultipleOpacity != nil {
+ shape.MultipleOpacity, _ = strconv.ParseFloat(obj.Style.MultipleOpacity.Value, 64)
+ }
if obj.Style.BorderRadius != nil {
shape.BorderRadius, _ = strconv.Atoi(obj.Style.BorderRadius.Value)
}
diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go
index ba9a02657..f97769f4e 100644
--- a/d2graph/d2graph.go
+++ b/d2graph/d2graph.go
@@ -281,26 +281,27 @@ func (r Reference) InEdge() bool {
}
type Style struct {
- Opacity *Scalar `json:"opacity,omitempty"`
- Stroke *Scalar `json:"stroke,omitempty"`
- Fill *Scalar `json:"fill,omitempty"`
- FillPattern *Scalar `json:"fillPattern,omitempty"`
- StrokeWidth *Scalar `json:"strokeWidth,omitempty"`
- StrokeDash *Scalar `json:"strokeDash,omitempty"`
- BorderRadius *Scalar `json:"borderRadius,omitempty"`
- Shadow *Scalar `json:"shadow,omitempty"`
- ThreeDee *Scalar `json:"3d,omitempty"`
- Multiple *Scalar `json:"multiple,omitempty"`
- Font *Scalar `json:"font,omitempty"`
- FontSize *Scalar `json:"fontSize,omitempty"`
- FontColor *Scalar `json:"fontColor,omitempty"`
- Animated *Scalar `json:"animated,omitempty"`
- Bold *Scalar `json:"bold,omitempty"`
- Italic *Scalar `json:"italic,omitempty"`
- Underline *Scalar `json:"underline,omitempty"`
- Filled *Scalar `json:"filled,omitempty"`
- DoubleBorder *Scalar `json:"doubleBorder,omitempty"`
- TextTransform *Scalar `json:"textTransform,omitempty"`
+ Opacity *Scalar `json:"opacity,omitempty"`
+ Stroke *Scalar `json:"stroke,omitempty"`
+ Fill *Scalar `json:"fill,omitempty"`
+ FillPattern *Scalar `json:"fillPattern,omitempty"`
+ StrokeWidth *Scalar `json:"strokeWidth,omitempty"`
+ StrokeDash *Scalar `json:"strokeDash,omitempty"`
+ BorderRadius *Scalar `json:"borderRadius,omitempty"`
+ Shadow *Scalar `json:"shadow,omitempty"`
+ ThreeDee *Scalar `json:"3d,omitempty"`
+ Multiple *Scalar `json:"multiple,omitempty"`
+ MultipleOpacity *Scalar `json:"multipleOpacity,omitempty"`
+ Font *Scalar `json:"font,omitempty"`
+ FontSize *Scalar `json:"fontSize,omitempty"`
+ FontColor *Scalar `json:"fontColor,omitempty"`
+ Animated *Scalar `json:"animated,omitempty"`
+ Bold *Scalar `json:"bold,omitempty"`
+ Italic *Scalar `json:"italic,omitempty"`
+ Underline *Scalar `json:"underline,omitempty"`
+ Filled *Scalar `json:"filled,omitempty"`
+ DoubleBorder *Scalar `json:"doubleBorder,omitempty"`
+ TextTransform *Scalar `json:"textTransform,omitempty"`
}
// NoneTextTransform will return a boolean if the text should not have any
@@ -399,6 +400,15 @@ func (s *Style) Apply(key, value string) error {
return errors.New(`expected "multiple" to be true or false`)
}
s.Multiple.Value = value
+ case "multiple.opacity":
+ if s.MultipleOpacity == nil {
+ break
+ }
+ f, err := strconv.ParseFloat(value, 64)
+ if err != nil || (f < 0 || f > 1) {
+ return errors.New(`expected "opacity" to be a number between 0.0 and 1.0`)
+ }
+ s.MultipleOpacity.Value = value
case "font":
if s.Font == nil {
break
diff --git a/d2renderers/d2sketch/testdata/dots-multiple/sketch.exp.svg b/d2renderers/d2sketch/testdata/dots-multiple/sketch.exp.svg
index c0550e464..598628dc9 100644
--- a/d2renderers/d2sketch/testdata/dots-multiple/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/dots-multiple/sketch.exp.svg
@@ -134,7 +134,7 @@
-rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
+rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
diff --git a/d2renderers/d2sketch/testdata/dots-real/sketch.exp.svg b/d2renderers/d2sketch/testdata/dots-real/sketch.exp.svg
index dd26833b1..418a878db 100644
--- a/d2renderers/d2sketch/testdata/dots-real/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/dots-real/sketch.exp.svg
@@ -170,7 +170,7 @@
-NETWORKD2 Parser+readerio.RuneReader+readerPosd2ast.Position-lookahead[]rune#peekn(n int)(s string, eof bool)+peek()(r rune, eof bool)+rewind()void+commit()voidCELL TOWERSATELLITESTRANSMITTER SEND SEND SEND
+NETWORKD2 Parser+readerio.RuneReader+readerPosd2ast.Position-lookahead[]rune#peekn(n int)(s string, eof bool)+peek()(r rune, eof bool)+rewind()void+commit()voidCELL TOWERSATELLITESTRANSMITTER SEND SEND SEND
diff --git a/d2renderers/d2sketch/testdata/paper-real/sketch.exp.svg b/d2renderers/d2sketch/testdata/paper-real/sketch.exp.svg
index bc6b4a4ed..819b7b384 100644
--- a/d2renderers/d2sketch/testdata/paper-real/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/paper-real/sketch.exp.svg
@@ -1216,7 +1216,7 @@
-NETWORKCELL TOWERSATELLITESTRANSMITTER SEND SEND SEND
+NETWORKCELL TOWERSATELLITESTRANSMITTER SEND SEND SEND
diff --git a/d2renderers/d2sketch/testdata/terminal/sketch.exp.svg b/d2renderers/d2sketch/testdata/terminal/sketch.exp.svg
index 0bfab0535..f26423b23 100644
--- a/d2renderers/d2sketch/testdata/terminal/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/terminal/sketch.exp.svg
@@ -148,7 +148,7 @@
-NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SEND SEND SEND PHONE LOGS MAKE CALL ACCESS DISPLAY PERSIST
+NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SEND SEND SEND PHONE LOGS MAKE CALL ACCESS DISPLAY PERSIST
diff --git a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg
index ae2b56050..cc6aecf47 100644
--- a/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/twitter/sketch.exp.svg
@@ -862,7 +862,7 @@
-People discovery serviceAd mixerOnboarding serviceTwitter Frontend WebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphTweety PiePrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
+
People discovery serviceAd mixerOnboarding serviceTwitter Frontend WebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphTweety PiePrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
- Inject ads, who-to-follow, onboarding
- Conversation module
diff --git a/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg b/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg
index 0366f1db8..f8cf7f4ba 100644
--- a/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg
+++ b/d2renderers/d2sketch/testdata/twitter_dark/sketch.exp.svg
@@ -862,7 +862,7 @@
-People discovery serviceAd mixerOnboarding serviceTwitter Frontend WebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphTweety PiePrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
+
People discovery serviceAd mixerOnboarding serviceTwitter Frontend WebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphTweety PiePrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
- Inject ads, who-to-follow, onboarding
- Conversation module
diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go
index adf6c5d1a..9f07da82b 100644
--- a/d2renderers/d2svg/d2svg.go
+++ b/d2renderers/d2svg/d2svg.go
@@ -1326,6 +1326,11 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
opacityStyle = fmt.Sprintf(" style='opacity:%f'", targetShape.Opacity)
}
+ multipleOpacityStyle := ""
+ if targetShape.MultipleOpacity != 1.0 {
+ multipleOpacityStyle = fmt.Sprintf(" opacity:%f", targetShape.MultipleOpacity)
+ }
+
// this clipPath must be defined outside `g` element
if targetShape.BorderRadius != 0 && (targetShape.Type == d2target.ShapeClass || targetShape.Type == d2target.ShapeSQLTable) {
fmt.Fprint(writer, clipPathForBorderRadius(diagramHash, targetShape))
@@ -1413,7 +1418,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
case d2target.ShapeOval:
if targetShape.DoubleBorder {
if targetShape.Multiple {
- fmt.Fprint(writer, renderDoubleOval(multipleTL, width, height, fill, "", stroke, style, inlineTheme))
+ fmt.Fprint(writer, renderDoubleOval(multipleTL, width, height, fill, "", stroke, style+multipleOpacityStyle, inlineTheme))
}
if jsRunner != nil {
out, err := d2sketch.DoubleOval(jsRunner, targetShape)
@@ -1426,7 +1431,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
}
} else {
if targetShape.Multiple {
- fmt.Fprint(writer, renderOval(multipleTL, width, height, fill, "", stroke, style, inlineTheme))
+ fmt.Fprint(writer, renderOval(multipleTL, width, height, fill, "", stroke, style+multipleOpacityStyle, inlineTheme))
}
if jsRunner != nil {
out, err := d2sketch.Oval(jsRunner, targetShape)
@@ -1472,7 +1477,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
el.Height = float64(targetShape.Height)
el.Fill = fill
el.Stroke = stroke
- el.Style = style
+ el.Style = style + multipleOpacityStyle
el.Rx = borderRadius
fmt.Fprint(writer, el.Render())
}
@@ -1505,7 +1510,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
el.Fill = fill
el.FillPattern = targetShape.FillPattern
el.Stroke = stroke
- el.Style = style
+ el.Style = style + multipleOpacityStyle
el.Rx = borderRadius
fmt.Fprint(writer, el.Render())
@@ -1561,7 +1566,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
el := d2themes.NewThemableElement("path", inlineTheme)
el.Fill = fill
el.Stroke = stroke
- el.Style = style
+ el.Style = style + multipleOpacityStyle
for _, pathData := range multiplePathData {
el.D = pathData
fmt.Fprint(writer, el.Render())
@@ -1593,7 +1598,7 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
el := d2themes.NewThemableElement("path", inlineTheme)
el.Fill = fill
el.Stroke = stroke
- el.Style = style
+ el.Style = style + multipleOpacityStyle
for _, pathData := range multiplePathData {
el.D = pathData
fmt.Fprint(writer, el.Render())
diff --git a/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg b/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg
index 6a0a73407..01117aa74 100644
--- a/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg
+++ b/d2renderers/d2svg/dark_theme/testdata/twitter/dark_theme.exp.svg
@@ -842,7 +842,7 @@
.d2-1329315803 .md .contains-task-list:dir(rtl) .task-list-item-checkbox {
margin: 0 -1.6em 0.25em 0.2em;
}
-People discovery serviceAd mixerOnboarding serviceTwitter Frontend WebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphTweety PiePrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
+
People discovery serviceAd mixerOnboarding serviceTwitter Frontend WebIphoneAndroidTimelineScorerHome RankerTimeline ServiceHome mixerManhattanGizmoduckSocial graphTweety PiePrediction ServiceHome ScorerManhattanMemcacheFetchFeatureScoringPrediction Service...etcTimeline mixer
- Inject ads, who-to-follow, onboarding
- Conversation module
diff --git a/d2target/d2target.go b/d2target/d2target.go
index 4880c2859..115e00a42 100644
--- a/d2target/d2target.go
+++ b/d2target/d2target.go
@@ -497,11 +497,12 @@ type Shape struct {
FillPattern string `json:"fillPattern,omitempty"`
Stroke string `json:"stroke"`
- Animated bool `json:"animated"`
- Shadow bool `json:"shadow"`
- ThreeDee bool `json:"3d"`
- Multiple bool `json:"multiple"`
- DoubleBorder bool `json:"double-border"`
+ Animated bool `json:"animated"`
+ Shadow bool `json:"shadow"`
+ ThreeDee bool `json:"3d"`
+ Multiple bool `json:"multiple"`
+ MultipleOpacity float64 `json:"multipleOpacity,omitempty"`
+ DoubleBorder bool `json:"double-border"`
Tooltip string `json:"tooltip"`
Link string `json:"link"`
diff --git a/e2etests/testdata/patterns/multiple/dagre/sketch.exp.svg b/e2etests/testdata/patterns/multiple/dagre/sketch.exp.svg
index 9cd6dfc88..1f6803972 100644
--- a/e2etests/testdata/patterns/multiple/dagre/sketch.exp.svg
+++ b/e2etests/testdata/patterns/multiple/dagre/sketch.exp.svg
@@ -122,7 +122,7 @@
-rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
+rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
diff --git a/e2etests/testdata/patterns/real-lines/dagre/sketch.exp.svg b/e2etests/testdata/patterns/real-lines/dagre/sketch.exp.svg
index 95c78ab87..b33ffde13 100644
--- a/e2etests/testdata/patterns/real-lines/dagre/sketch.exp.svg
+++ b/e2etests/testdata/patterns/real-lines/dagre/sketch.exp.svg
@@ -145,7 +145,7 @@
-NETWORKcostumesidintPKsillinessintmonsterintlast_updatedtimestampmonstersidintPKmoviestringweightintlast_updatedtimestampCELL TOWERSATELLITESTRANSMITTER SENDSENDSEND
+NETWORKcostumesidintPKsillinessintmonsterintlast_updatedtimestampmonstersidintPKmoviestringweightintlast_updatedtimestampCELL TOWERSATELLITESTRANSMITTER SENDSENDSEND
diff --git a/e2etests/testdata/patterns/real/dagre/sketch.exp.svg b/e2etests/testdata/patterns/real/dagre/sketch.exp.svg
index 81a0e0484..f9d5ea982 100644
--- a/e2etests/testdata/patterns/real/dagre/sketch.exp.svg
+++ b/e2etests/testdata/patterns/real/dagre/sketch.exp.svg
@@ -136,7 +136,7 @@
-NETWORKCELL TOWERSATELLITESTRANSMITTER SENDSENDSEND
+NETWORKCELL TOWERSATELLITESTRANSMITTER SENDSENDSEND
diff --git a/e2etests/testdata/stable/all_shapes_multiple/dagre/sketch.exp.svg b/e2etests/testdata/stable/all_shapes_multiple/dagre/sketch.exp.svg
index bf4ee9bc3..241b501d3 100644
--- a/e2etests/testdata/stable/all_shapes_multiple/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/all_shapes_multiple/dagre/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-2407724796 .color-AA4{color:#EDF0FD;}
.d2-2407724796 .color-AA5{color:#F7F8FE;}
.d2-2407724796 .color-AB4{color:#EDF0FD;}
- .d2-2407724796 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2407724796);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2407724796);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2407724796);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2407724796);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2407724796);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2407724796);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2407724796);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
+ .d2-2407724796 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2407724796);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2407724796);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2407724796);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2407724796);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2407724796);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2407724796);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2407724796);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2407724796);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
diff --git a/e2etests/testdata/stable/all_shapes_multiple/elk/sketch.exp.svg b/e2etests/testdata/stable/all_shapes_multiple/elk/sketch.exp.svg
index ce8fd43ff..e18fd727d 100644
--- a/e2etests/testdata/stable/all_shapes_multiple/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/all_shapes_multiple/elk/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-637431275 .color-AA4{color:#EDF0FD;}
.d2-637431275 .color-AA5{color:#F7F8FE;}
.d2-637431275 .color-AB4{color:#EDF0FD;}
- .d2-637431275 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-637431275);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-637431275);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-637431275);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-637431275);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-637431275);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-637431275);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-637431275);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
+ .d2-637431275 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-637431275);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-637431275);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-637431275);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-637431275);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-637431275);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-637431275);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-637431275);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-637431275);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>rectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloud
diff --git a/e2etests/testdata/stable/border-radius-pill-shape/dagre/sketch.exp.svg b/e2etests/testdata/stable/border-radius-pill-shape/dagre/sketch.exp.svg
index a9ecea93f..7e9115b24 100644
--- a/e2etests/testdata/stable/border-radius-pill-shape/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/border-radius-pill-shape/dagre/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-448308156 .color-AA4{color:#EDF0FD;}
.d2-448308156 .color-AA5{color:#F7F8FE;}
.d2-448308156 .color-AB4{color:#EDF0FD;}
- .d2-448308156 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-448308156);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-448308156);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-448308156);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-448308156);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-448308156);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-448308156);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-448308156);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
+ .d2-448308156 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-448308156);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-448308156);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-448308156);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-448308156);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-448308156);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-448308156);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-448308156);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-448308156);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
three-dee
diff --git a/e2etests/testdata/stable/border-radius-pill-shape/elk/sketch.exp.svg b/e2etests/testdata/stable/border-radius-pill-shape/elk/sketch.exp.svg
index b287706c1..9f402c5c8 100644
--- a/e2etests/testdata/stable/border-radius-pill-shape/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/border-radius-pill-shape/elk/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-2886130221 .color-AA4{color:#EDF0FD;}
.d2-2886130221 .color-AA5{color:#F7F8FE;}
.d2-2886130221 .color-AB4{color:#EDF0FD;}
- .d2-2886130221 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2886130221);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2886130221);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2886130221);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2886130221);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2886130221);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2886130221);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2886130221);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
+ .d2-2886130221 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2886130221);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2886130221);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2886130221);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2886130221);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2886130221);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2886130221);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2886130221);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2886130221);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
three-dee
diff --git a/e2etests/testdata/stable/border-radius/dagre/sketch.exp.svg b/e2etests/testdata/stable/border-radius/dagre/sketch.exp.svg
index a1570a2c4..689c5c109 100644
--- a/e2etests/testdata/stable/border-radius/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/border-radius/dagre/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-1236460180 .color-AA4{color:#EDF0FD;}
.d2-1236460180 .color-AA5{color:#F7F8FE;}
.d2-1236460180 .color-AB4{color:#EDF0FD;}
- .d2-1236460180 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1236460180);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1236460180);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1236460180);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1236460180);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1236460180);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1236460180);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1236460180);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
+ .d2-1236460180 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1236460180);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1236460180);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1236460180);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1236460180);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1236460180);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1236460180);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1236460180);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1236460180);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
three-dee
diff --git a/e2etests/testdata/stable/border-radius/elk/sketch.exp.svg b/e2etests/testdata/stable/border-radius/elk/sketch.exp.svg
index 134bb6270..50d8343a2 100644
--- a/e2etests/testdata/stable/border-radius/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/border-radius/elk/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-773068003 .color-AA4{color:#EDF0FD;}
.d2-773068003 .color-AA5{color:#F7F8FE;}
.d2-773068003 .color-AB4{color:#EDF0FD;}
- .d2-773068003 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-773068003);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-773068003);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-773068003);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-773068003);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-773068003);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-773068003);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-773068003);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
+ .d2-773068003 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-773068003);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-773068003);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-773068003);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-773068003);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-773068003);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-773068003);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-773068003);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-773068003);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>xymultiple2double
three-dee
diff --git a/e2etests/testdata/stable/elk_shim/dagre/sketch.exp.svg b/e2etests/testdata/stable/elk_shim/dagre/sketch.exp.svg
index 9ec11c0f2..9bec44ded 100644
--- a/e2etests/testdata/stable/elk_shim/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/elk_shim/dagre/sketch.exp.svg
@@ -103,7 +103,7 @@
.d2-183595053 .color-AA4{color:#EDF0FD;}
.d2-183595053 .color-AA5{color:#F7F8FE;}
.d2-183595053 .color-AB4{color:#EDF0FD;}
- .d2-183595053 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-183595053);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-183595053);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-183595053);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-183595053);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-183595053);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-183595053);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-183595053);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>networkuserapi serverlogscell towerONLINE PORTALLLLdata processorsatellitestransmitteruistorage sendsendsendphone logsmake call accessdisplaypersist
+ .d2-183595053 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-183595053);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-183595053);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-183595053);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-183595053);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-183595053);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-183595053);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-183595053);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-183595053);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>networkuserapi serverlogscell towerONLINE PORTALLLLdata processorsatellitestransmitteruistorage sendsendsendphone logsmake call accessdisplaypersist
diff --git a/e2etests/testdata/stable/elk_shim/elk/sketch.exp.svg b/e2etests/testdata/stable/elk_shim/elk/sketch.exp.svg
index 1a8bdd668..710f8c390 100644
--- a/e2etests/testdata/stable/elk_shim/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/elk_shim/elk/sketch.exp.svg
@@ -103,7 +103,7 @@
.d2-2410870253 .color-AA4{color:#EDF0FD;}
.d2-2410870253 .color-AA5{color:#F7F8FE;}
.d2-2410870253 .color-AB4{color:#EDF0FD;}
- .d2-2410870253 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2410870253);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2410870253);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2410870253);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2410870253);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2410870253);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2410870253);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2410870253);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>networkuserapi serverlogscell towerONLINE PORTALLLLdata processorsatellitestransmitteruistorage sendsendsendphone logsmake call accessdisplaypersist
+ .d2-2410870253 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2410870253);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2410870253);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2410870253);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2410870253);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2410870253);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2410870253);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2410870253);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2410870253);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>networkuserapi serverlogscell towerONLINE PORTALLLLdata processorsatellitestransmitteruistorage sendsendsendphone logsmake call accessdisplaypersist
diff --git a/e2etests/testdata/stable/grid_outside_labels/dagre/sketch.exp.svg b/e2etests/testdata/stable/grid_outside_labels/dagre/sketch.exp.svg
index 536fd41bb..d09475bc5 100644
--- a/e2etests/testdata/stable/grid_outside_labels/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/grid_outside_labels/dagre/sketch.exp.svg
@@ -91,7 +91,7 @@
.d2-269116138 .color-AB4{color:#EDF0FD;}
.d2-269116138 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-269116138);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-269116138);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-269116138);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-269116138);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-269116138);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-269116138);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-269116138);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-269116138);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>___________________________________container____________________________________amscd plugin
-braket plugincancel plugincolor plugingensymb pluginmhchem pluginphysics pluginmultilinesasmµ
+braket plugincancel plugincolor plugingensymb pluginmhchem pluginphysics pluginmultilinesasmµ
diff --git a/e2etests/testdata/stable/grid_outside_labels/elk/sketch.exp.svg b/e2etests/testdata/stable/grid_outside_labels/elk/sketch.exp.svg
index 3af1b4ff7..dcef15f44 100644
--- a/e2etests/testdata/stable/grid_outside_labels/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/grid_outside_labels/elk/sketch.exp.svg
@@ -91,7 +91,7 @@
.d2-1333473382 .color-AB4{color:#EDF0FD;}
.d2-1333473382 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1333473382);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1333473382);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1333473382);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1333473382);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1333473382);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1333473382);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1333473382);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1333473382);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>___________________________________container____________________________________amscd plugin
-braket plugincancel plugincolor plugingensymb pluginmhchem pluginphysics pluginmultilinesasmµ
+braket plugincancel plugincolor plugingensymb pluginmhchem pluginphysics pluginmultilinesasmµ
diff --git a/e2etests/testdata/stable/mono-font/dagre/sketch.exp.svg b/e2etests/testdata/stable/mono-font/dagre/sketch.exp.svg
index 9dd1ba116..ed57ebcfc 100644
--- a/e2etests/testdata/stable/mono-font/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/mono-font/dagre/sketch.exp.svg
@@ -103,7 +103,7 @@
.d2-3097297157 .color-AA4{color:#EDF0FD;}
.d2-3097297157 .color-AA5{color:#F7F8FE;}
.d2-3097297157 .color-AB4{color:#EDF0FD;}
- .d2-3097297157 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3097297157);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3097297157);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3097297157);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3097297157);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3097297157);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3097297157);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3097297157);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>SATELLITESTRANSMITTER SENDSENDSEND
+ .d2-3097297157 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3097297157);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3097297157);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3097297157);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3097297157);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3097297157);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3097297157);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3097297157);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3097297157);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>SATELLITESTRANSMITTER SENDSENDSEND
diff --git a/e2etests/testdata/stable/mono-font/elk/sketch.exp.svg b/e2etests/testdata/stable/mono-font/elk/sketch.exp.svg
index f1d5c800e..9d6f0f1c4 100644
--- a/e2etests/testdata/stable/mono-font/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/mono-font/elk/sketch.exp.svg
@@ -103,7 +103,7 @@
.d2-3660418575 .color-AA4{color:#EDF0FD;}
.d2-3660418575 .color-AA5{color:#F7F8FE;}
.d2-3660418575 .color-AB4{color:#EDF0FD;}
- .d2-3660418575 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3660418575);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3660418575);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3660418575);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3660418575);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3660418575);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3660418575);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3660418575);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>SATELLITESTRANSMITTER SENDSENDSEND
+ .d2-3660418575 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3660418575);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3660418575);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3660418575);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3660418575);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3660418575);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3660418575);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3660418575);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3660418575);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>SATELLITESTRANSMITTER SENDSENDSEND
diff --git a/e2etests/testdata/stable/multiple_box_selection/dagre/sketch.exp.svg b/e2etests/testdata/stable/multiple_box_selection/dagre/sketch.exp.svg
index 248178ed5..99bdc1bad 100644
--- a/e2etests/testdata/stable/multiple_box_selection/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_box_selection/dagre/sketch.exp.svg
@@ -96,7 +96,7 @@
.d2-3028019976 .color-AA4{color:#EDF0FD;}
.d2-3028019976 .color-AA5{color:#F7F8FE;}
.d2-3028019976 .color-AB4{color:#EDF0FD;}
- .d2-3028019976 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3028019976);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3028019976);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3028019976);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3028019976);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3028019976);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3028019976);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3028019976);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>outerstartendvolume groupvolume definitionvolume
+ .d2-3028019976 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3028019976);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3028019976);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3028019976);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3028019976);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3028019976);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3028019976);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3028019976);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3028019976);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>outerstartendvolume groupvolume definitionvolume
diff --git a/e2etests/testdata/stable/multiple_box_selection/elk/sketch.exp.svg b/e2etests/testdata/stable/multiple_box_selection/elk/sketch.exp.svg
index 0bf87bffa..9ff80086d 100644
--- a/e2etests/testdata/stable/multiple_box_selection/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_box_selection/elk/sketch.exp.svg
@@ -96,7 +96,7 @@
.d2-2029988810 .color-AA4{color:#EDF0FD;}
.d2-2029988810 .color-AA5{color:#F7F8FE;}
.d2-2029988810 .color-AB4{color:#EDF0FD;}
- .d2-2029988810 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2029988810);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2029988810);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2029988810);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2029988810);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2029988810);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2029988810);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2029988810);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>outerstartendvolume groupvolume definitionvolume
+ .d2-2029988810 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2029988810);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2029988810);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2029988810);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2029988810);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2029988810);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2029988810);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2029988810);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2029988810);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>outerstartendvolume groupvolume definitionvolume
diff --git a/e2etests/testdata/stable/multiple_offset/dagre/sketch.exp.svg b/e2etests/testdata/stable/multiple_offset/dagre/sketch.exp.svg
index 1002cf345..cf6a63388 100644
--- a/e2etests/testdata/stable/multiple_offset/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_offset/dagre/sketch.exp.svg
@@ -96,21 +96,21 @@
.d2-3863633706 .color-AA4{color:#EDF0FD;}
.d2-3863633706 .color-AA5{color:#F7F8FE;}
.d2-3863633706 .color-AB4{color:#EDF0FD;}
- .d2-3863633706 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3863633706);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3863633706);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3863633706);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3863633706);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3863633706);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3863633706);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3863633706);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
+ .d2-3863633706 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3863633706);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3863633706);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3863633706);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3863633706);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3863633706);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3863633706);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3863633706);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3863633706);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
-n4n5
+n4n5
-n6n7
+n6n7
-n8n9
+n8n9
-n10aba
+n10aba
-baba
+baba
-bababab
+bababab
-abab
+abab
a
diff --git a/e2etests/testdata/stable/multiple_offset/elk/sketch.exp.svg b/e2etests/testdata/stable/multiple_offset/elk/sketch.exp.svg
index d21b4d564..73b97f7bd 100644
--- a/e2etests/testdata/stable/multiple_offset/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_offset/elk/sketch.exp.svg
@@ -96,21 +96,21 @@
.d2-2956067749 .color-AA4{color:#EDF0FD;}
.d2-2956067749 .color-AA5{color:#F7F8FE;}
.d2-2956067749 .color-AB4{color:#EDF0FD;}
- .d2-2956067749 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2956067749);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2956067749);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2956067749);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2956067749);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2956067749);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2956067749);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2956067749);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
+ .d2-2956067749 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2956067749);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2956067749);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2956067749);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2956067749);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2956067749);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2956067749);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2956067749);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2956067749);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
-n4n5
+n4n5
-n6n7
+n6n7
-n8n9
+n8n9
-n10aba
+n10aba
-baba
+baba
-bababab
+bababab
-abab
+abab
a
diff --git a/e2etests/testdata/stable/multiple_offset_left/dagre/sketch.exp.svg b/e2etests/testdata/stable/multiple_offset_left/dagre/sketch.exp.svg
index f1e00d8a1..2ec047986 100644
--- a/e2etests/testdata/stable/multiple_offset_left/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_offset_left/dagre/sketch.exp.svg
@@ -96,21 +96,21 @@
.d2-1825809757 .color-AA4{color:#EDF0FD;}
.d2-1825809757 .color-AA5{color:#F7F8FE;}
.d2-1825809757 .color-AB4{color:#EDF0FD;}
- .d2-1825809757 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1825809757);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1825809757);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1825809757);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1825809757);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1825809757);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1825809757);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1825809757);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
+ .d2-1825809757 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1825809757);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1825809757);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1825809757);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1825809757);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1825809757);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1825809757);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1825809757);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1825809757);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
-n4n5
+n4n5
-n6n7
+n6n7
-n8n9
+n8n9
-n10aba
+n10aba
-baba
+baba
-bababab
+bababab
-abab
+abab
a
diff --git a/e2etests/testdata/stable/multiple_offset_left/elk/sketch.exp.svg b/e2etests/testdata/stable/multiple_offset_left/elk/sketch.exp.svg
index 66ca987b4..107f54889 100644
--- a/e2etests/testdata/stable/multiple_offset_left/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_offset_left/elk/sketch.exp.svg
@@ -96,21 +96,21 @@
.d2-1207717161 .color-AA4{color:#EDF0FD;}
.d2-1207717161 .color-AA5{color:#F7F8FE;}
.d2-1207717161 .color-AB4{color:#EDF0FD;}
- .d2-1207717161 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1207717161);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1207717161);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1207717161);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1207717161);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1207717161);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1207717161);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1207717161);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
+ .d2-1207717161 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1207717161);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1207717161);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1207717161);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1207717161);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1207717161);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1207717161);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1207717161);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1207717161);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>n1n2n3
-n4n5
+n4n5
-n6n7
+n6n7
-n8n9
+n8n9
-n10aba
+n10aba
-baba
+baba
-bababab
+bababab
-abab
+abab
a
diff --git a/e2etests/testdata/stable/multiple_person_label/dagre/sketch.exp.svg b/e2etests/testdata/stable/multiple_person_label/dagre/sketch.exp.svg
index f903c4741..b4a9a202f 100644
--- a/e2etests/testdata/stable/multiple_person_label/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_person_label/dagre/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-1389951319 .color-AA4{color:#EDF0FD;}
.d2-1389951319 .color-AA5{color:#F7F8FE;}
.d2-1389951319 .color-AB4{color:#EDF0FD;}
- .d2-1389951319 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1389951319);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1389951319);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1389951319);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1389951319);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1389951319);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1389951319);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1389951319);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>あ
+ .d2-1389951319 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1389951319);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1389951319);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1389951319);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1389951319);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1389951319);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1389951319);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1389951319);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1389951319);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>あ
\ No newline at end of file
diff --git a/e2etests/testdata/stable/multiple_person_label/elk/sketch.exp.svg b/e2etests/testdata/stable/multiple_person_label/elk/sketch.exp.svg
index e2f6d8d15..a8f4021d4 100644
--- a/e2etests/testdata/stable/multiple_person_label/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/multiple_person_label/elk/sketch.exp.svg
@@ -89,7 +89,7 @@
.d2-3688633770 .color-AA4{color:#EDF0FD;}
.d2-3688633770 .color-AA5{color:#F7F8FE;}
.d2-3688633770 .color-AB4{color:#EDF0FD;}
- .d2-3688633770 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3688633770);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3688633770);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3688633770);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3688633770);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3688633770);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3688633770);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3688633770);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>あ
+ .d2-3688633770 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3688633770);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3688633770);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3688633770);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3688633770);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3688633770);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3688633770);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3688633770);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3688633770);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>あ
\ No newline at end of file
diff --git a/e2etests/testdata/stable/nesting_power/dagre/sketch.exp.svg b/e2etests/testdata/stable/nesting_power/dagre/sketch.exp.svg
index 20cb56194..3d3e5eb37 100644
--- a/e2etests/testdata/stable/nesting_power/dagre/sketch.exp.svg
+++ b/e2etests/testdata/stable/nesting_power/dagre/sketch.exp.svg
@@ -111,7 +111,7 @@
-Left Constant NearcenterdirectionsRight Constant NearseqmoreBottom Left Constant Neardefaultlayouthererectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloudrightleftisconstantandalsogridscoreritemResponseitemessayRubricconceptitemOutcomestylishcontaineradagreelktalathisisgrid12341234updownnearax
+Left Constant NearcenterdirectionsRight Constant NearseqmoreBottom Left Constant Neardefaultlayouthererectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloudrightleftisconstantandalsogridscoreritemResponseitemessayRubricconceptitemOutcomestylishcontaineradagreelktalathisisgrid12341234updownnearax
ya_sequencea_shapesequencefinallybrow 1row 2row 3row 4row 5withasequence diagramyou canchild of is12341234scoreritemResponseitemessayRubricconceptsequencefrom one constant nearhaveanothergridhere andgrandchildscorerconceptessayRubricitemitemOutcomeitemResponse123continuenesting ororruns thisruns thisruns thisA straight edge across straight edge across nested typesdefault layoutdefault layoutdefault layout in styleto inside sequence diagramto inside sequence diagramto inside sequence diagramto constant nearfrom within constant nearto another getItem() itemgetRubric()rubricapplyTo(essayResp)match(essayResponse)score
diff --git a/e2etests/testdata/stable/nesting_power/elk/sketch.exp.svg b/e2etests/testdata/stable/nesting_power/elk/sketch.exp.svg
index 188c11569..e28c01e57 100644
--- a/e2etests/testdata/stable/nesting_power/elk/sketch.exp.svg
+++ b/e2etests/testdata/stable/nesting_power/elk/sketch.exp.svg
@@ -111,7 +111,7 @@
-Left Constant NearcenterdirectionsRight Constant NearseqmoreBottom Left Constant Neardefaultlayouthererectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloudrightleftisconstantandalsogridscoreritemResponseitemessayRubricconceptitemOutcomestylishcontaineradagreelktalathisisgrid12341234updownnearax
+Left Constant NearcenterdirectionsRight Constant NearseqmoreBottom Left Constant Neardefaultlayouthererectanglesquarepageparallelogramdocumentcylinderqueuepackagestepcalloutstored_datapersondiamondovalcirclehexagoncloudrightleftisconstantandalsogridscoreritemResponseitemessayRubricconceptitemOutcomestylishcontaineradagreelktalathisisgrid12341234updownnearax
ya_sequencea_shapesequencefinallybrow 1row 2row 3row 4row 5withasequence diagramyou canchild of is12341234scoreritemResponseitemessayRubricconceptsequencefrom one constant nearhaveanothergridhere andgrandchildscorerconceptessayRubricitemitemOutcomeitemResponse123continuenesting ororruns thisruns thisruns thisA straight edge across straight edge across nested typesdefault layoutdefault layoutdefault layout in styleto inside sequence diagramto inside sequence diagramto inside sequence diagramto constant nearfrom within constant nearto another getItem() itemgetRubric()rubricapplyTo(essayResp)match(essayResponse)score
diff --git a/e2etests/testdata/themes/dark_terrastruct_flagship/dagre/sketch.exp.svg b/e2etests/testdata/themes/dark_terrastruct_flagship/dagre/sketch.exp.svg
index ac8a7c4b7..2d4f79632 100644
--- a/e2etests/testdata/themes/dark_terrastruct_flagship/dagre/sketch.exp.svg
+++ b/e2etests/testdata/themes/dark_terrastruct_flagship/dagre/sketch.exp.svg
@@ -856,7 +856,7 @@
.d2-85991054 .md .contains-task-list:dir(rtl) .task-list-item-checkbox {
margin: 0 -1.6em 0.25em 0.2em;
}
-networkuserapi serverlogsusersidintnamestringemailstringpasswordstringlast_logindatetimeproducts+idint+pricedecimal+skustring+namestringA tale
+
networkuserapi serverlogsusersidintnamestringemailstringpasswordstringlast_logindatetimeproducts+idint+pricedecimal+skustring+namestringA tale
- of
- two cities
@@ -907,7 +907,7 @@
city2 := City{Name: "CityB", Population: 1200000}
tellTale(city1, city2)
-}Cell Toweronline portaldata processorsatellitesTRANSMITTERuistorage sendsendsendphone logsmake call accessdisplaypersist
+}Cell Toweronline portaldata processorsatellitesTRANSMITTERuistorage sendsendsendphone logsmake call accessdisplaypersist
diff --git a/e2etests/testdata/themes/dark_terrastruct_flagship/elk/sketch.exp.svg b/e2etests/testdata/themes/dark_terrastruct_flagship/elk/sketch.exp.svg
index e50e5243a..a0262422e 100644
--- a/e2etests/testdata/themes/dark_terrastruct_flagship/elk/sketch.exp.svg
+++ b/e2etests/testdata/themes/dark_terrastruct_flagship/elk/sketch.exp.svg
@@ -856,7 +856,7 @@
.d2-3004075822 .md .contains-task-list:dir(rtl) .task-list-item-checkbox {
margin: 0 -1.6em 0.25em 0.2em;
}
-networkuserapi serverlogsusersidintnamestringemailstringpasswordstringlast_logindatetimeproducts+idint+pricedecimal+skustring+namestringA tale
+
networkuserapi serverlogsusersidintnamestringemailstringpasswordstringlast_logindatetimeproducts+idint+pricedecimal+skustring+namestringA tale
- of
- two cities
@@ -907,7 +907,7 @@
city2 := City{Name: "CityB", Population: 1200000}
tellTale(city1, city2)
-}Cell Toweronline portaldata processorsatellitesTRANSMITTERuistorage sendsendsendphone logsmake call accessdisplaypersist
+}Cell Toweronline portaldata processorsatellitesTRANSMITTERuistorage sendsendsendphone logsmake call accessdisplaypersist
diff --git a/e2etests/testdata/themes/origami/dagre/sketch.exp.svg b/e2etests/testdata/themes/origami/dagre/sketch.exp.svg
index e3cf97803..d86218a3a 100644
--- a/e2etests/testdata/themes/origami/dagre/sketch.exp.svg
+++ b/e2etests/testdata/themes/origami/dagre/sketch.exp.svg
@@ -1167,7 +1167,7 @@
-通信網ユーザーOTHER-USERapi サーバーログCell Towerオンラインポータルデータプロセッサ衛星送信機ui保管所 sendSENDsend電話ログ電話をかける アクセス画面持続する
+通信網ユーザーOTHER-USERapi サーバーログCell Towerオンラインポータルデータプロセッサ衛星送信機ui保管所 sendSENDsend電話ログ電話をかける アクセス画面持続する
diff --git a/e2etests/testdata/themes/origami/elk/sketch.exp.svg b/e2etests/testdata/themes/origami/elk/sketch.exp.svg
index e91f3025c..9fce8b251 100644
--- a/e2etests/testdata/themes/origami/elk/sketch.exp.svg
+++ b/e2etests/testdata/themes/origami/elk/sketch.exp.svg
@@ -1167,7 +1167,7 @@
-通信網ユーザーOTHER-USERapi サーバーログCell Towerオンラインポータルデータプロセッサ衛星送信機ui保管所 sendSENDsend電話ログ電話をかける アクセス画面持続する
+通信網ユーザーOTHER-USERapi サーバーログCell Towerオンラインポータルデータプロセッサ衛星送信機ui保管所 sendSENDsend電話ログ電話をかける アクセス画面持続する
diff --git a/e2etests/testdata/themes/terminal/dagre/sketch.exp.svg b/e2etests/testdata/themes/terminal/dagre/sketch.exp.svg
index 88ab4d969..52133b595 100644
--- a/e2etests/testdata/themes/terminal/dagre/sketch.exp.svg
+++ b/e2etests/testdata/themes/terminal/dagre/sketch.exp.svg
@@ -882,7 +882,7 @@
-NETWORKUSERAPI SERVERLOGSUSERSidintnamestringemailstringpasswordstringlast_logindatetimePRODUCTS+idint+pricedecimal+skustring+namestringA TALE
+
NETWORKUSERAPI SERVERLOGSUSERSidintnamestringemailstringpasswordstringlast_logindatetimePRODUCTS+idint+pricedecimal+skustring+namestringA TALE
- OF
- TWO CITIES
@@ -933,7 +933,7 @@
city2 := City{Name: "CityB", Population: 1200000}
tellTale(city1, city2)
-}Cell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
+}Cell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
diff --git a/e2etests/testdata/themes/terminal/elk/sketch.exp.svg b/e2etests/testdata/themes/terminal/elk/sketch.exp.svg
index f9a6f116e..b8e01941f 100644
--- a/e2etests/testdata/themes/terminal/elk/sketch.exp.svg
+++ b/e2etests/testdata/themes/terminal/elk/sketch.exp.svg
@@ -882,7 +882,7 @@
-NETWORKUSERAPI SERVERLOGSUSERSidintnamestringemailstringpasswordstringlast_logindatetimePRODUCTS+idint+pricedecimal+skustring+namestringA TALE
+
NETWORKUSERAPI SERVERLOGSUSERSidintnamestringemailstringpasswordstringlast_logindatetimePRODUCTS+idint+pricedecimal+skustring+namestringA TALE
- OF
- TWO CITIES
@@ -933,7 +933,7 @@
city2 := City{Name: "CityB", Population: 1200000}
tellTale(city1, city2)
-}Cell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
+}Cell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
diff --git a/e2etests/testdata/themes/terminal_grayscale/dagre/sketch.exp.svg b/e2etests/testdata/themes/terminal_grayscale/dagre/sketch.exp.svg
index e1d3ca115..7a04cd2eb 100644
--- a/e2etests/testdata/themes/terminal_grayscale/dagre/sketch.exp.svg
+++ b/e2etests/testdata/themes/terminal_grayscale/dagre/sketch.exp.svg
@@ -136,7 +136,7 @@
-NETWORKUSERAPI SERVERLOGSCell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDphone logsMAKE CALL ACCESSDISPLAYPERSIST
+NETWORKUSERAPI SERVERLOGSCell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDphone logsMAKE CALL ACCESSDISPLAYPERSIST
diff --git a/e2etests/testdata/themes/terminal_grayscale/elk/sketch.exp.svg b/e2etests/testdata/themes/terminal_grayscale/elk/sketch.exp.svg
index a4b9a4f20..9dcd2f7c6 100644
--- a/e2etests/testdata/themes/terminal_grayscale/elk/sketch.exp.svg
+++ b/e2etests/testdata/themes/terminal_grayscale/elk/sketch.exp.svg
@@ -136,7 +136,7 @@
-NETWORKUSERAPI SERVERLOGSCell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDphone logsMAKE CALL ACCESSDISPLAYPERSIST
+NETWORKUSERAPI SERVERLOGSCell TowerONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE sendSENDSENDphone logsMAKE CALL ACCESSDISPLAYPERSIST
diff --git a/e2etests/testdata/txtar/multiple_opacity/dagre/board.exp.json b/e2etests/testdata/txtar/multiple_opacity/dagre/board.exp.json
new file mode 100644
index 000000000..70f9fabc9
--- /dev/null
+++ b/e2etests/testdata/txtar/multiple_opacity/dagre/board.exp.json
@@ -0,0 +1,100 @@
+{
+ "name": "",
+ "config": {
+ "sketch": false,
+ "themeID": 0,
+ "darkThemeID": null,
+ "pad": null,
+ "center": null,
+ "layoutEngine": null
+ },
+ "isFolderOnly": false,
+ "fontFamily": "SourceSansPro",
+ "shapes": [
+ {
+ "id": "a",
+ "type": "rectangle",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 53,
+ "height": 66,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "B6",
+ "stroke": "B1",
+ "animated": false,
+ "shadow": false,
+ "3d": false,
+ "multiple": true,
+ "multipleOpacity": 0.5,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N1",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 8,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ }
+ ],
+ "connections": [],
+ "root": {
+ "id": "",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 0,
+ "height": 0,
+ "opacity": 0,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "N7",
+ "stroke": "",
+ "animated": false,
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "zIndex": 0,
+ "level": 0
+ }
+}
diff --git a/e2etests/testdata/txtar/multiple_opacity/dagre/sketch.exp.svg b/e2etests/testdata/txtar/multiple_opacity/dagre/sketch.exp.svg
new file mode 100644
index 000000000..ecbb9af31
--- /dev/null
+++ b/e2etests/testdata/txtar/multiple_opacity/dagre/sketch.exp.svg
@@ -0,0 +1,95 @@
+a
+
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/txtar/multiple_opacity/elk/board.exp.json b/e2etests/testdata/txtar/multiple_opacity/elk/board.exp.json
new file mode 100644
index 000000000..a2dd469a4
--- /dev/null
+++ b/e2etests/testdata/txtar/multiple_opacity/elk/board.exp.json
@@ -0,0 +1,100 @@
+{
+ "name": "",
+ "config": {
+ "sketch": false,
+ "themeID": 0,
+ "darkThemeID": null,
+ "pad": null,
+ "center": null,
+ "layoutEngine": null
+ },
+ "isFolderOnly": false,
+ "fontFamily": "SourceSansPro",
+ "shapes": [
+ {
+ "id": "a",
+ "type": "rectangle",
+ "pos": {
+ "x": 12,
+ "y": 22
+ },
+ "width": 53,
+ "height": 66,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "B6",
+ "stroke": "B1",
+ "animated": false,
+ "shadow": false,
+ "3d": false,
+ "multiple": true,
+ "multipleOpacity": 0.5,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "N1",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 8,
+ "labelHeight": 21,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "zIndex": 0,
+ "level": 1
+ }
+ ],
+ "connections": [],
+ "root": {
+ "id": "",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 0,
+ "height": 0,
+ "opacity": 0,
+ "strokeDash": 0,
+ "strokeWidth": 0,
+ "borderRadius": 0,
+ "fill": "N7",
+ "stroke": "",
+ "animated": false,
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "double-border": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "zIndex": 0,
+ "level": 0
+ }
+}
diff --git a/e2etests/testdata/txtar/multiple_opacity/elk/sketch.exp.svg b/e2etests/testdata/txtar/multiple_opacity/elk/sketch.exp.svg
new file mode 100644
index 000000000..8769828ec
--- /dev/null
+++ b/e2etests/testdata/txtar/multiple_opacity/elk/sketch.exp.svg
@@ -0,0 +1,95 @@
+a
+
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/txtar/shape-animate/dagre/sketch.exp.svg b/e2etests/testdata/txtar/shape-animate/dagre/sketch.exp.svg
index 42ab87e19..01aced3c9 100644
--- a/e2etests/testdata/txtar/shape-animate/dagre/sketch.exp.svg
+++ b/e2etests/testdata/txtar/shape-animate/dagre/sketch.exp.svg
@@ -144,7 +144,7 @@
-NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SENDSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
+NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SENDSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
diff --git a/e2etests/testdata/txtar/shape-animate/elk/sketch.exp.svg b/e2etests/testdata/txtar/shape-animate/elk/sketch.exp.svg
index 7705f2aae..9fd032ec2 100644
--- a/e2etests/testdata/txtar/shape-animate/elk/sketch.exp.svg
+++ b/e2etests/testdata/txtar/shape-animate/elk/sketch.exp.svg
@@ -144,7 +144,7 @@
-NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SENDSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
+NETWORKUSERAPI SERVERLOGSCELL TOWERONLINE PORTALDATA PROCESSORSATELLITESTRANSMITTERUISTORAGE SENDSENDSENDPHONE LOGSMAKE CALL ACCESSDISPLAYPERSIST
diff --git a/e2etests/testdata/txtar/theme-overrides/dagre/sketch.exp.svg b/e2etests/testdata/txtar/theme-overrides/dagre/sketch.exp.svg
index e76a7cfb3..938545edc 100644
--- a/e2etests/testdata/txtar/theme-overrides/dagre/sketch.exp.svg
+++ b/e2etests/testdata/txtar/theme-overrides/dagre/sketch.exp.svg
@@ -103,7 +103,7 @@
.d2-586632521 .color-AA4{color:#42A5F5;}
.d2-586632521 .color-AA5{color:#90CAF9;}
.d2-586632521 .color-AB4{color:#F44336;}
- .d2-586632521 .color-AB5{color:#FFCDD2;}.appendix text.text{fill:#2E2E2E}.md{--color-fg-default:#2E2E2E;--color-fg-muted:#2E2E2E;--color-fg-subtle:#595959;--color-canvas-default:#DCDCDC;--color-canvas-subtle:#DCDCDC;--color-border-default:#2E7D32;--color-border-muted:#66BB6A;--color-neutral-muted:#DCDCDC;--color-accent-fg:#66BB6A;--color-accent-emphasis:#66BB6A;--color-attention-subtle:#2E2E2E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-B2{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-B4{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-B5{fill:url(#streaks-bright-d2-586632521);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-586632521);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-darker-d2-586632521);mix-blend-mode:lighten}.sketch-overlay-AA4{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-AA5{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-AB4{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-AB5{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-N1{fill:url(#streaks-darker-d2-586632521);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-darker-d2-586632521);mix-blend-mode:lighten}.sketch-overlay-N3{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-N4{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-N6{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-N7{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.light-code{display: block}.dark-code{display: none}]]>logsUserNetworkAPI ServercostumesidintPKsillinessintmonsterintlast_updatedtimestampmonstersidintPKmoviestringweightintlast_updatedtimestampCell TowerData ProcessorOnline PortalsatellitestransmitterStorageUI phone logsMake callpersistdisplay access
+ .d2-586632521 .color-AB5{color:#FFCDD2;}.appendix text.text{fill:#2E2E2E}.md{--color-fg-default:#2E2E2E;--color-fg-muted:#2E2E2E;--color-fg-subtle:#595959;--color-canvas-default:#DCDCDC;--color-canvas-subtle:#DCDCDC;--color-border-default:#2E7D32;--color-border-muted:#66BB6A;--color-neutral-muted:#DCDCDC;--color-accent-fg:#66BB6A;--color-accent-emphasis:#66BB6A;--color-attention-subtle:#2E2E2E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-B2{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-B4{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-B5{fill:url(#streaks-bright-d2-586632521);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-586632521);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-darker-d2-586632521);mix-blend-mode:lighten}.sketch-overlay-AA4{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-AA5{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-AB4{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-AB5{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-N1{fill:url(#streaks-darker-d2-586632521);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-darker-d2-586632521);mix-blend-mode:lighten}.sketch-overlay-N3{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-N4{fill:url(#streaks-dark-d2-586632521);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-N6{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.sketch-overlay-N7{fill:url(#streaks-normal-d2-586632521);mix-blend-mode:color-burn}.light-code{display: block}.dark-code{display: none}]]>logsUserNetworkAPI ServercostumesidintPKsillinessintmonsterintlast_updatedtimestampmonstersidintPKmoviestringweightintlast_updatedtimestampCell TowerData ProcessorOnline PortalsatellitestransmitterStorageUI phone logsMake callpersistdisplay access
diff --git a/e2etests/testdata/txtar/theme-overrides/elk/sketch.exp.svg b/e2etests/testdata/txtar/theme-overrides/elk/sketch.exp.svg
index dc1b82e74..522f953e7 100644
--- a/e2etests/testdata/txtar/theme-overrides/elk/sketch.exp.svg
+++ b/e2etests/testdata/txtar/theme-overrides/elk/sketch.exp.svg
@@ -103,7 +103,7 @@
.d2-2010673424 .color-AA4{color:#42A5F5;}
.d2-2010673424 .color-AA5{color:#90CAF9;}
.d2-2010673424 .color-AB4{color:#F44336;}
- .d2-2010673424 .color-AB5{color:#FFCDD2;}.appendix text.text{fill:#2E2E2E}.md{--color-fg-default:#2E2E2E;--color-fg-muted:#2E2E2E;--color-fg-subtle:#595959;--color-canvas-default:#DCDCDC;--color-canvas-subtle:#DCDCDC;--color-border-default:#2E7D32;--color-border-muted:#66BB6A;--color-neutral-muted:#DCDCDC;--color-accent-fg:#66BB6A;--color-accent-emphasis:#66BB6A;--color-attention-subtle:#2E2E2E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-B2{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-B4{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2010673424);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2010673424);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-darker-d2-2010673424);mix-blend-mode:lighten}.sketch-overlay-AA4{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-AA5{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-AB4{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-AB5{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2010673424);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-darker-d2-2010673424);mix-blend-mode:lighten}.sketch-overlay-N3{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-N4{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-N6{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-N7{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.light-code{display: block}.dark-code{display: none}]]>logsUserNetworkAPI ServercostumesidintPKsillinessintmonsterintlast_updatedtimestampmonstersidintPKmoviestringweightintlast_updatedtimestampCell TowerData ProcessorOnline PortalsatellitestransmitterStorageUI phone logsMake callpersistdisplay access
+ .d2-2010673424 .color-AB5{color:#FFCDD2;}.appendix text.text{fill:#2E2E2E}.md{--color-fg-default:#2E2E2E;--color-fg-muted:#2E2E2E;--color-fg-subtle:#595959;--color-canvas-default:#DCDCDC;--color-canvas-subtle:#DCDCDC;--color-border-default:#2E7D32;--color-border-muted:#66BB6A;--color-neutral-muted:#DCDCDC;--color-accent-fg:#66BB6A;--color-accent-emphasis:#66BB6A;--color-attention-subtle:#2E2E2E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-B2{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-B4{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2010673424);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2010673424);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-darker-d2-2010673424);mix-blend-mode:lighten}.sketch-overlay-AA4{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-AA5{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-AB4{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-AB5{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2010673424);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-darker-d2-2010673424);mix-blend-mode:lighten}.sketch-overlay-N3{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-N4{fill:url(#streaks-dark-d2-2010673424);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-N6{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.sketch-overlay-N7{fill:url(#streaks-normal-d2-2010673424);mix-blend-mode:color-burn}.light-code{display: block}.dark-code{display: none}]]>logsUserNetworkAPI ServercostumesidintPKsillinessintmonsterintlast_updatedtimestampmonstersidintPKmoviestringweightintlast_updatedtimestampCell TowerData ProcessorOnline PortalsatellitestransmitterStorageUI phone logsMake callpersistdisplay access
diff --git a/e2etests/txtar.txt b/e2etests/txtar.txt
index 90fb07c1b..20980d6f3 100644
--- a/e2etests/txtar.txt
+++ b/e2etests/txtar.txt
@@ -1190,3 +1190,11 @@ customer4: |md
| {
shape: c4-person
}
+
+-- multiple opacity --
+a: {
+ style: {
+ multiple: true
+ multiple.opacity: 0.5
+ }
+}