Repository: Textualize/textual

Issue:
Placeholder cycle per app
The placeholder stores the current color in a classvar.

This means that a second app will start where the previous app left off. And may return a different color from the first iteration.

Not much of an issue in practice, but in the docs the colors change every screenshot. I think we need a separate cycle per app. Suggest we have an independent sequence for each app instance.


Discussion:
We already have `reset_color_cycle` as an attempt to fix that, but I don't like it.
Can I get rid of `reset_color_cycle` while I'm at it?
Sure
You might be able to do this with a WeakKeySet where the keys are apps. Just a thought.
> You might be able to do this with a WeakKeySet where the keys are apps. Just a thought.

Thanks. I was doing it with a standard dictionary with app IDs as keys.
That would work. Downside is that the app IDs wouldn't be removed when the app is deleted. 
But that's also a marginal issue, no?
How many apps will you create and destroy after loading the `Placeholder`..?
It's unlikely to be an issue, sure. But its not much more work to do the weak dict. May as well?

Resolving patch:
diff --git a/docs/examples/styles/width_comparison.py b/docs/examples/styles/width_comparison.py
--- a/docs/examples/styles/width_comparison.py
+++ b/docs/examples/styles/width_comparison.py
@@ -1,6 +1,6 @@
 from textual.app import App
 from textual.containers import Horizontal
-from textual.widgets import Placeholder, Label, Static
+from textual.widgets import Label, Placeholder, Static
 
 
 class Ruler(Static):
@@ -9,7 +9,7 @@ def compose(self):
         yield Label(ruler_text)
 
 
-class HeightComparisonApp(App):
+class WidthComparisonApp(App):
     def compose(self):
         yield Horizontal(
             Placeholder(id="cells"),  # (1)!
@@ -25,4 +25,6 @@ def compose(self):
         yield Ruler()
 
 
-app = HeightComparisonApp(css_path="width_comparison.css")
+app = WidthComparisonApp(css_path="width_comparison.css")
+if __name__ == "__main__":
+    app.run()
diff --git a/src/textual/widgets/_placeholder.py b/src/textual/widgets/_placeholder.py
--- a/src/textual/widgets/_placeholder.py
+++ b/src/textual/widgets/_placeholder.py
@@ -3,10 +3,14 @@
 from __future__ import annotations
 
 from itertools import cycle
+from typing import Iterator
+from weakref import WeakKeyDictionary
 
 from rich.console import RenderableType
 from typing_extensions import Literal, Self
 
+from textual.app import App
+
 from .. import events
 from ..css._error_tools import friendly_list
 from ..reactive import Reactive, reactive
@@ -72,18 +76,13 @@ class Placeholder(Widget):
     """
 
     # Consecutive placeholders get assigned consecutive colors.
-    _COLORS = cycle(_PLACEHOLDER_BACKGROUND_COLORS)
+    _COLORS: WeakKeyDictionary[App, Iterator[str]] = WeakKeyDictionary()
     _SIZE_RENDER_TEMPLATE = "[b]{} x {}[/b]"
 
     variant: Reactive[PlaceholderVariant] = reactive[PlaceholderVariant]("default")
 
     _renderables: dict[PlaceholderVariant, str]
 
-    @classmethod
-    def reset_color_cycle(cls) -> None:
-        """Reset the placeholder background color cycle."""
-        cls._COLORS = cycle(_PLACEHOLDER_BACKGROUND_COLORS)
-
     def __init__(
         self,
         label: str | None = None,
@@ -113,8 +112,6 @@ def __init__(
 
         super().__init__(name=name, id=id, classes=classes)
 
-        self.styles.background = f"{next(Placeholder._COLORS)} 50%"
-
         self.variant = self.validate_variant(variant)
         """The current variant of the placeholder."""
 
@@ -123,6 +120,13 @@ def __init__(
         while next(self._variants_cycle) != self.variant:
             pass
 
+    def on_mount(self) -> None:
+        """Set the color for this placeholder."""
+        colors = Placeholder._COLORS.setdefault(
+            self.app, cycle(_PLACEHOLDER_BACKGROUND_COLORS)
+        )
+        self.styles.background = f"{next(colors)} 50%"
+
     def render(self) -> RenderableType:
         """Render the placeholder.
 


Test patch:
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots.ambr b/tests/snapshot_tests/__snapshots__/test_snapshots.ambr
--- a/tests/snapshot_tests/__snapshots__/test_snapshots.ambr
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots.ambr
@@ -12292,141 +12292,141 @@
           font-weight: 700;
       }
   
-      .terminal-1938916138-matrix {
+      .terminal-4051010257-matrix {
           font-family: Fira Code, monospace;
           font-size: 20px;
           line-height: 24.4px;
           font-variant-east-asian: full-width;
       }
   
-      .terminal-1938916138-title {
+      .terminal-4051010257-title {
           font-size: 18px;
           font-weight: bold;
           font-family: arial;
       }
   
-      .terminal-1938916138-r1 { fill: #c5c8c6 }
-  .terminal-1938916138-r2 { fill: #e8e0e7 }
-  .terminal-1938916138-r3 { fill: #eae3e5 }
-  .terminal-1938916138-r4 { fill: #ede6e6 }
-  .terminal-1938916138-r5 { fill: #efe9e4 }
-  .terminal-1938916138-r6 { fill: #efeedf }
-  .terminal-1938916138-r7 { fill: #e9eee5 }
-  .terminal-1938916138-r8 { fill: #e4eee8 }
-  .terminal-1938916138-r9 { fill: #e2edeb }
-  .terminal-1938916138-r10 { fill: #dfebed }
-  .terminal-1938916138-r11 { fill: #ddedf9 }
+      .terminal-4051010257-r1 { fill: #c5c8c6 }
+  .terminal-4051010257-r2 { fill: #e8e0e7 }
+  .terminal-4051010257-r3 { fill: #eae3e5 }
+  .terminal-4051010257-r4 { fill: #ede6e6 }
+  .terminal-4051010257-r5 { fill: #efe9e4 }
+  .terminal-4051010257-r6 { fill: #efeedf }
+  .terminal-4051010257-r7 { fill: #e9eee5 }
+  .terminal-4051010257-r8 { fill: #e4eee8 }
+  .terminal-4051010257-r9 { fill: #e2edeb }
+  .terminal-4051010257-r10 { fill: #dfebed }
+  .terminal-4051010257-r11 { fill: #ddedf9 }
       </style>
   
       <defs>
-      <clipPath id="terminal-1938916138-clip-terminal">
+      <clipPath id="terminal-4051010257-clip-terminal">
         <rect x="0" y="0" width="975.0" height="584.5999999999999" />
       </clipPath>
-      <clipPath id="terminal-1938916138-line-0">
+      <clipPath id="terminal-4051010257-line-0">
       <rect x="0" y="1.5" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-1">
+  <clipPath id="terminal-4051010257-line-1">
       <rect x="0" y="25.9" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-2">
+  <clipPath id="terminal-4051010257-line-2">
       <rect x="0" y="50.3" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-3">
+  <clipPath id="terminal-4051010257-line-3">
       <rect x="0" y="74.7" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-4">
+  <clipPath id="terminal-4051010257-line-4">
       <rect x="0" y="99.1" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-5">
+  <clipPath id="terminal-4051010257-line-5">
       <rect x="0" y="123.5" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-6">
+  <clipPath id="terminal-4051010257-line-6">
       <rect x="0" y="147.9" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-7">
+  <clipPath id="terminal-4051010257-line-7">
       <rect x="0" y="172.3" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-8">
+  <clipPath id="terminal-4051010257-line-8">
       <rect x="0" y="196.7" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-9">
+  <clipPath id="terminal-4051010257-line-9">
       <rect x="0" y="221.1" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-10">
+  <clipPath id="terminal-4051010257-line-10">
       <rect x="0" y="245.5" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-11">
+  <clipPath id="terminal-4051010257-line-11">
       <rect x="0" y="269.9" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-12">
+  <clipPath id="terminal-4051010257-line-12">
       <rect x="0" y="294.3" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-13">
+  <clipPath id="terminal-4051010257-line-13">
       <rect x="0" y="318.7" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-14">
+  <clipPath id="terminal-4051010257-line-14">
       <rect x="0" y="343.1" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-15">
+  <clipPath id="terminal-4051010257-line-15">
       <rect x="0" y="367.5" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-16">
+  <clipPath id="terminal-4051010257-line-16">
       <rect x="0" y="391.9" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-17">
+  <clipPath id="terminal-4051010257-line-17">
       <rect x="0" y="416.3" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-18">
+  <clipPath id="terminal-4051010257-line-18">
       <rect x="0" y="440.7" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-19">
+  <clipPath id="terminal-4051010257-line-19">
       <rect x="0" y="465.1" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-20">
+  <clipPath id="terminal-4051010257-line-20">
       <rect x="0" y="489.5" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-21">
+  <clipPath id="terminal-4051010257-line-21">
       <rect x="0" y="513.9" width="976" height="24.65"/>
               </clipPath>
-  <clipPath id="terminal-1938916138-line-22">
+  <clipPath id="terminal-4051010257-line-22">
       <rect x="0" y="538.3" width="976" height="24.65"/>
               </clipPath>
       </defs>
   
-      <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="992" height="633.6" rx="8"/><text class="terminal-1938916138-title" fill="#c5c8c6" text-anchor="middle" x="496" y="27">HeightComparisonApp</text>
+      <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="992" height="633.6" rx="8"/><text class="terminal-4051010257-title" fill="#c5c8c6" text-anchor="middle" x="496" y="27">WidthComparisonApp</text>
               <g transform="translate(26,22)">
               <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
               <circle cx="22" cy="0" r="7" fill="#febc2e"/>
               <circle cx="44" cy="0" r="7" fill="#28c840"/>
               </g>
           
-      <g transform="translate(9, 41)" clip-path="url(#terminal-1938916138-clip-terminal)">
+      <g transform="translate(9, 41)" clip-path="url(#terminal-4051010257-clip-terminal)">
       <rect fill="#53174a" x="0" y="1.5" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="1.5" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="1.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="1.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="1.5" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="1.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="1.5" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="1.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="1.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="25.9" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="25.9" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="25.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="25.9" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="25.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="25.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="50.3" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="50.3" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="50.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="50.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="50.3" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="50.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="50.3" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="50.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="50.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="74.7" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="74.7" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="74.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="74.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="74.7" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="74.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="74.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="74.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="74.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="99.1" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="99.1" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="99.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="99.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="99.1" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="99.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="99.1" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="99.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="99.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="123.5" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="123.5" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="123.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="123.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="123.5" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="123.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="123.5" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="123.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="123.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="147.9" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="147.9" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="147.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="147.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="147.9" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="147.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="147.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="147.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="147.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="172.3" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="172.3" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="172.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="172.3" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="172.3" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="172.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="196.7" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="196.7" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="196.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="196.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="196.7" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="196.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="196.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="196.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="196.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="221.1" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="221.1" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="221.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="221.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="221.1" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="221.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="221.1" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="221.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="221.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="245.5" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="245.5" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="245.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="245.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="245.5" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="245.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="245.5" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="245.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="245.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="12.2" y="269.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="85.4" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="122" y="269.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="219.6" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="269.9" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="268.4" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="292.8" y="269.9" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="353.8" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="378.2" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="269.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="451.4" y="269.9" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="488" y="269.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="561.2" y="269.9" width="36.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="597.8" y="269.9" width="24.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="269.9" width="0" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="269.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="695.4" y="269.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="744.2" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="269.9" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="841.8" y="269.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="890.6" y="269.9" width="85.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="294.3" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="294.3" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="294.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="294.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="294.3" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="294.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="294.3" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="294.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="294.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="318.7" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="318.7" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="318.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="318.7" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="318.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="318.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="343.1" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="343.1" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="343.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="343.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="343.1" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="343.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="343.1" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="343.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="343.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="367.5" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="367.5" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="367.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="367.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="367.5" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="367.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="367.5" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="367.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="367.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="391.9" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="391.9" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="391.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="391.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="391.9" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="391.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="391.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="391.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="391.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="416.3" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="416.3" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="416.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="416.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="416.3" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="416.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="416.3" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="416.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="416.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="440.7" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="440.7" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="440.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="440.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="440.7" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="440.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="440.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="440.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="440.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="465.1" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="465.1" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="465.1" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="465.1" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="465.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="489.5" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="489.5" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="489.5" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="489.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="489.5" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="489.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="489.5" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="489.5" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="489.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="513.9" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="513.9" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="513.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="513.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="513.9" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="513.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="513.9" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="513.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="513.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#53174a" x="0" y="538.3" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#642839" x="109.8" y="538.3" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#754242" x="231.8" y="538.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#865b31" x="329.4" y="538.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#867d0f" x="402.6" y="538.3" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#5b7d39" x="549" y="538.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#317d53" x="622.2" y="538.3" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#20756c" x="683.2" y="538.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0f6c75" x="756.4" y="538.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="0" y="562.7" width="109.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="109.8" y="562.7" width="122" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="231.8" y="562.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="329.4" y="562.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="402.6" y="562.7" width="146.4" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="549" y="562.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="622.2" y="562.7" width="61" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="683.2" y="562.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#0178d4" x="756.4" y="562.7" width="219.6" height="24.65" shape-rendering="crispEdges"/>
-      <g class="terminal-1938916138-matrix">
-      <text class="terminal-1938916138-r1" x="976" y="20" textLength="12.2" clip-path="url(#terminal-1938916138-line-0)">
-  </text><text class="terminal-1938916138-r1" x="976" y="44.4" textLength="12.2" clip-path="url(#terminal-1938916138-line-1)">
-  </text><text class="terminal-1938916138-r1" x="976" y="68.8" textLength="12.2" clip-path="url(#terminal-1938916138-line-2)">
-  </text><text class="terminal-1938916138-r1" x="976" y="93.2" textLength="12.2" clip-path="url(#terminal-1938916138-line-3)">
-  </text><text class="terminal-1938916138-r1" x="976" y="117.6" textLength="12.2" clip-path="url(#terminal-1938916138-line-4)">
-  </text><text class="terminal-1938916138-r1" x="976" y="142" textLength="12.2" clip-path="url(#terminal-1938916138-line-5)">
-  </text><text class="terminal-1938916138-r1" x="976" y="166.4" textLength="12.2" clip-path="url(#terminal-1938916138-line-6)">
-  </text><text class="terminal-1938916138-r1" x="976" y="190.8" textLength="12.2" clip-path="url(#terminal-1938916138-line-7)">
-  </text><text class="terminal-1938916138-r1" x="976" y="215.2" textLength="12.2" clip-path="url(#terminal-1938916138-line-8)">
-  </text><text class="terminal-1938916138-r1" x="976" y="239.6" textLength="12.2" clip-path="url(#terminal-1938916138-line-9)">
-  </text><text class="terminal-1938916138-r1" x="976" y="264" textLength="12.2" clip-path="url(#terminal-1938916138-line-10)">
-  </text><text class="terminal-1938916138-r2" x="12.2" y="288.4" textLength="73.2" clip-path="url(#terminal-1938916138-line-11)">#cells</text><text class="terminal-1938916138-r3" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal-1938916138-line-11)">#percent</text><text class="terminal-1938916138-r4" x="268.4" y="288.4" textLength="24.4" clip-path="url(#terminal-1938916138-line-11)">#w</text><text class="terminal-1938916138-r5" x="353.8" y="288.4" textLength="24.4" clip-path="url(#terminal-1938916138-line-11)">#h</text><text class="terminal-1938916138-r6" x="451.4" y="288.4" textLength="36.6" clip-path="url(#terminal-1938916138-line-11)">#vw</text><text class="terminal-1938916138-r7" x="561.2" y="288.4" textLength="36.6" clip-path="url(#terminal-1938916138-line-11)">#vh</text><text class="terminal-1938916138-r8" x="622.2" y="288.4" textLength="61" clip-path="url(#terminal-1938916138-line-11)">#auto</text><text class="terminal-1938916138-r9" x="695.4" y="288.4" textLength="48.8" clip-path="url(#terminal-1938916138-line-11)">#fr1</text><text class="terminal-1938916138-r10" x="841.8" y="288.4" textLength="48.8" clip-path="url(#terminal-1938916138-line-11)">#fr3</text><text class="terminal-1938916138-r1" x="976" y="288.4" textLength="12.2" clip-path="url(#terminal-1938916138-line-11)">
-  </text><text class="terminal-1938916138-r1" x="976" y="312.8" textLength="12.2" clip-path="url(#terminal-1938916138-line-12)">
-  </text><text class="terminal-1938916138-r1" x="976" y="337.2" textLength="12.2" clip-path="url(#terminal-1938916138-line-13)">
-  </text><text class="terminal-1938916138-r1" x="976" y="361.6" textLength="12.2" clip-path="url(#terminal-1938916138-line-14)">
-  </text><text class="terminal-1938916138-r1" x="976" y="386" textLength="12.2" clip-path="url(#terminal-1938916138-line-15)">
-  </text><text class="terminal-1938916138-r1" x="976" y="410.4" textLength="12.2" clip-path="url(#terminal-1938916138-line-16)">
-  </text><text class="terminal-1938916138-r1" x="976" y="434.8" textLength="12.2" clip-path="url(#terminal-1938916138-line-17)">
-  </text><text class="terminal-1938916138-r1" x="976" y="459.2" textLength="12.2" clip-path="url(#terminal-1938916138-line-18)">
-  </text><text class="terminal-1938916138-r1" x="976" y="483.6" textLength="12.2" clip-path="url(#terminal-1938916138-line-19)">
-  </text><text class="terminal-1938916138-r1" x="976" y="508" textLength="12.2" clip-path="url(#terminal-1938916138-line-20)">
-  </text><text class="terminal-1938916138-r1" x="976" y="532.4" textLength="12.2" clip-path="url(#terminal-1938916138-line-21)">
-  </text><text class="terminal-1938916138-r1" x="976" y="556.8" textLength="12.2" clip-path="url(#terminal-1938916138-line-22)">
-  </text><text class="terminal-1938916138-r11" x="0" y="581.2" textLength="109.8" clip-path="url(#terminal-1938916138-line-23)">····•····</text><text class="terminal-1938916138-r11" x="109.8" y="581.2" textLength="122" clip-path="url(#terminal-1938916138-line-23)">•····•····</text><text class="terminal-1938916138-r11" x="231.8" y="581.2" textLength="97.6" clip-path="url(#terminal-1938916138-line-23)">•····•··</text><text class="terminal-1938916138-r11" x="329.4" y="581.2" textLength="73.2" clip-path="url(#terminal-1938916138-line-23)">··•···</text><text class="terminal-1938916138-r11" x="402.6" y="581.2" textLength="146.4" clip-path="url(#terminal-1938916138-line-23)">·•····•····•</text><text class="terminal-1938916138-r11" x="549" y="581.2" textLength="73.2" clip-path="url(#terminal-1938916138-line-23)">····•·</text><text class="terminal-1938916138-r11" x="622.2" y="581.2" textLength="61" clip-path="url(#terminal-1938916138-line-23)">···•·</text><text class="terminal-1938916138-r11" x="683.2" y="581.2" textLength="73.2" clip-path="url(#terminal-1938916138-line-23)">···•··</text><text class="terminal-1938916138-r11" x="756.4" y="581.2" textLength="219.6" clip-path="url(#terminal-1938916138-line-23)">··•····•····•····•</text>
+      <g class="terminal-4051010257-matrix">
+      <text class="terminal-4051010257-r1" x="976" y="20" textLength="12.2" clip-path="url(#terminal-4051010257-line-0)">
+  </text><text class="terminal-4051010257-r1" x="976" y="44.4" textLength="12.2" clip-path="url(#terminal-4051010257-line-1)">
+  </text><text class="terminal-4051010257-r1" x="976" y="68.8" textLength="12.2" clip-path="url(#terminal-4051010257-line-2)">
+  </text><text class="terminal-4051010257-r1" x="976" y="93.2" textLength="12.2" clip-path="url(#terminal-4051010257-line-3)">
+  </text><text class="terminal-4051010257-r1" x="976" y="117.6" textLength="12.2" clip-path="url(#terminal-4051010257-line-4)">
+  </text><text class="terminal-4051010257-r1" x="976" y="142" textLength="12.2" clip-path="url(#terminal-4051010257-line-5)">
+  </text><text class="terminal-4051010257-r1" x="976" y="166.4" textLength="12.2" clip-path="url(#terminal-4051010257-line-6)">
+  </text><text class="terminal-4051010257-r1" x="976" y="190.8" textLength="12.2" clip-path="url(#terminal-4051010257-line-7)">
+  </text><text class="terminal-4051010257-r1" x="976" y="215.2" textLength="12.2" clip-path="url(#terminal-4051010257-line-8)">
+  </text><text class="terminal-4051010257-r1" x="976" y="239.6" textLength="12.2" clip-path="url(#terminal-4051010257-line-9)">
+  </text><text class="terminal-4051010257-r1" x="976" y="264" textLength="12.2" clip-path="url(#terminal-4051010257-line-10)">
+  </text><text class="terminal-4051010257-r2" x="12.2" y="288.4" textLength="73.2" clip-path="url(#terminal-4051010257-line-11)">#cells</text><text class="terminal-4051010257-r3" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal-4051010257-line-11)">#percent</text><text class="terminal-4051010257-r4" x="268.4" y="288.4" textLength="24.4" clip-path="url(#terminal-4051010257-line-11)">#w</text><text class="terminal-4051010257-r5" x="353.8" y="288.4" textLength="24.4" clip-path="url(#terminal-4051010257-line-11)">#h</text><text class="terminal-4051010257-r6" x="451.4" y="288.4" textLength="36.6" clip-path="url(#terminal-4051010257-line-11)">#vw</text><text class="terminal-4051010257-r7" x="561.2" y="288.4" textLength="36.6" clip-path="url(#terminal-4051010257-line-11)">#vh</text><text class="terminal-4051010257-r8" x="622.2" y="288.4" textLength="61" clip-path="url(#terminal-4051010257-line-11)">#auto</text><text class="terminal-4051010257-r9" x="695.4" y="288.4" textLength="48.8" clip-path="url(#terminal-4051010257-line-11)">#fr1</text><text class="terminal-4051010257-r10" x="841.8" y="288.4" textLength="48.8" clip-path="url(#terminal-4051010257-line-11)">#fr3</text><text class="terminal-4051010257-r1" x="976" y="288.4" textLength="12.2" clip-path="url(#terminal-4051010257-line-11)">
+  </text><text class="terminal-4051010257-r1" x="976" y="312.8" textLength="12.2" clip-path="url(#terminal-4051010257-line-12)">
+  </text><text class="terminal-4051010257-r1" x="976" y="337.2" textLength="12.2" clip-path="url(#terminal-4051010257-line-13)">
+  </text><text class="terminal-4051010257-r1" x="976" y="361.6" textLength="12.2" clip-path="url(#terminal-4051010257-line-14)">
+  </text><text class="terminal-4051010257-r1" x="976" y="386" textLength="12.2" clip-path="url(#terminal-4051010257-line-15)">
+  </text><text class="terminal-4051010257-r1" x="976" y="410.4" textLength="12.2" clip-path="url(#terminal-4051010257-line-16)">
+  </text><text class="terminal-4051010257-r1" x="976" y="434.8" textLength="12.2" clip-path="url(#terminal-4051010257-line-17)">
+  </text><text class="terminal-4051010257-r1" x="976" y="459.2" textLength="12.2" clip-path="url(#terminal-4051010257-line-18)">
+  </text><text class="terminal-4051010257-r1" x="976" y="483.6" textLength="12.2" clip-path="url(#terminal-4051010257-line-19)">
+  </text><text class="terminal-4051010257-r1" x="976" y="508" textLength="12.2" clip-path="url(#terminal-4051010257-line-20)">
+  </text><text class="terminal-4051010257-r1" x="976" y="532.4" textLength="12.2" clip-path="url(#terminal-4051010257-line-21)">
+  </text><text class="terminal-4051010257-r1" x="976" y="556.8" textLength="12.2" clip-path="url(#terminal-4051010257-line-22)">
+  </text><text class="terminal-4051010257-r11" x="0" y="581.2" textLength="109.8" clip-path="url(#terminal-4051010257-line-23)">····•····</text><text class="terminal-4051010257-r11" x="109.8" y="581.2" textLength="122" clip-path="url(#terminal-4051010257-line-23)">•····•····</text><text class="terminal-4051010257-r11" x="231.8" y="581.2" textLength="97.6" clip-path="url(#terminal-4051010257-line-23)">•····•··</text><text class="terminal-4051010257-r11" x="329.4" y="581.2" textLength="73.2" clip-path="url(#terminal-4051010257-line-23)">··•···</text><text class="terminal-4051010257-r11" x="402.6" y="581.2" textLength="146.4" clip-path="url(#terminal-4051010257-line-23)">·•····•····•</text><text class="terminal-4051010257-r11" x="549" y="581.2" textLength="73.2" clip-path="url(#terminal-4051010257-line-23)">····•·</text><text class="terminal-4051010257-r11" x="622.2" y="581.2" textLength="61" clip-path="url(#terminal-4051010257-line-23)">···•·</text><text class="terminal-4051010257-r11" x="683.2" y="581.2" textLength="73.2" clip-path="url(#terminal-4051010257-line-23)">···•··</text><text class="terminal-4051010257-r11" x="756.4" y="581.2" textLength="219.6" clip-path="url(#terminal-4051010257-line-23)">··•····•····•····•</text>
       </g>
       </g>
   </svg>
diff --git a/tests/snapshot_tests/test_snapshots.py b/tests/snapshot_tests/test_snapshots.py
--- a/tests/snapshot_tests/test_snapshots.py
+++ b/tests/snapshot_tests/test_snapshots.py
@@ -91,7 +91,6 @@ def test_buttons_render(snap_compare):
 
 def test_placeholder_render(snap_compare):
     # Testing the rendering of the multiple placeholder variants and labels.
-    Placeholder.reset_color_cycle()
     assert snap_compare(WIDGET_EXAMPLES_DIR / "placeholder.py")
 
 
@@ -261,7 +260,6 @@ def test_select_expanded_changed(snap_compare):
 @pytest.mark.parametrize("file_name", PATHS)
 def test_css_property(file_name, snap_compare):
     path_to_app = STYLES_EXAMPLES_DIR / file_name
-    Placeholder.reset_color_cycle()
     assert snap_compare(path_to_app)