Repository: Textualize/textual
Pull request: Border colour percentage
Adds the ability to say something like:

```scss
Widget {
    border: solid red 50%;
}
```

See #1863.

Problem statement:
Add a percentage to the border definition to apply an alpha
It's often a requirement to set a border that is muted a little, but there is no easy way of applying an alpha to a border if it is not already set.

I think we should add an optional percentage to the border definition, to multiple the borders alpha. Something like the following:

```
border: solid $foreground 50%;
```

Hints from issue discussion:
Just to make sure, you _can_ mute the border a little if you bake the alpha value into the colour itself, right?
Yeah, you can set a color with alpha. But you apply new alpha to that color.

Commit message: Add a CSS example for using border transparency

Patch to review:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4296bb28c5..a7f4483342 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 - Added `radio_set` attribute to `RadioSet` events https://github.com/Textualize/textual/pull/1940
 - Added `switch` attribute to `Switch` events https://github.com/Textualize/textual/pull/1940
 - Breaking change: Added `toggle_button` attribute to RadioButton and Checkbox events, replaces `input` https://github.com/Textualize/textual/pull/1940
+- A percentage alpha can now be applied to a border https://github.com/Textualize/textual/issues/1863
 
 ### Fixed
 
diff --git a/docs/styles/border.md b/docs/styles/border.md
index 2e370fc160..5e9322909d 100644
--- a/docs/styles/border.md
+++ b/docs/styles/border.md
@@ -9,15 +9,15 @@ The `border` rule enables the drawing of a box around a widget.
 ## Syntax
 
 --8<-- "docs/snippets/syntax_block_start.md"
-border: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>];
+border: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>] [<a href="../../css_types/percentage">&lt;percentage&gt;</a>];
 
-border-top: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>];
-border-right: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>];
-border-bottom: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>];
-border-left: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>];
+border-top: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a>] [<a href="../../css_types/percentage">&lt;percentage&gt;</a>];
+border-right: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a> [<a href="../../css_types/percentage">&lt;percentage&gt;</a>]];
+border-bottom: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a> [<a href="../../css_types/percentage">&lt;percentage&gt;</a>]];
+border-left: [<a href="../../css_types/border">&lt;border&gt;</a>] [<a href="../../css_types/color">&lt;color&gt;</a> [<a href="../../css_types/percentage">&lt;percentage&gt;</a>]];
 --8<-- "docs/snippets/syntax_block_end.md"
 
-The style `border` accepts an optional [`<border>`](../../css_types/border) that sets the visual style of the widget border and an optional [`<color>`](../../css_types/color) to set the color of the border.
+The style `border` accepts an optional [`<border>`](../../css_types/border) that sets the visual style of the widget border, an optional [`<color>`](../../css_types/color) to set the color of the border, and an optional [`<percentage>`](../../css_types/percentage) to specify the color transparency.
 
 Borders may also be set individually for the four edges of a widget with the `border-top`, `border-right`, `border-bottom` and `border-left` rules.
 
@@ -41,6 +41,7 @@ The CSS snippet above will add a solid green border around `Static` widgets, exc
 
 If `<color>` is specified but `<border>` is not, it defaults to `"solid"`.
 If `<border>` is specified but `<color>`is not, it defaults to green (RGB color `"#00FF00"`).
+If `<percentage>` is not specified it defaults to `100%`.
 
 ## Border command
 
@@ -126,8 +127,11 @@ This example also shows that a widget cannot contain both a `border` and an `out
 /* Set a heavy white border */
 border: heavy white;
 
-/* set a red border on the left */
+/* Set a red border on the left */
 border-left: outer red;
+
+/* Set a rounded orange border, 50% transparency. */
+border: round orange 50%;
 ```
 
 ## Python
diff --git a/src/textual/css/_styles_builder.py b/src/textual/css/_styles_builder.py
index 26b67b07cc..9d1ddc728c 100644
--- a/src/textual/css/_styles_builder.py
+++ b/src/textual/css/_styles_builder.py
@@ -441,6 +441,7 @@ def _process_space_partial(self, name: str, tokens: list[Token]) -> None:
     def _parse_border(self, name: str, tokens: list[Token]) -> BorderValue:
         border_type: EdgeType = "solid"
         border_color = Color(0, 255, 0)
+        border_alpha: float | None = None
 
         def border_value_error():
             self.error(name, token, border_property_help_text(name, context="css"))
@@ -462,9 +463,18 @@ def border_value_error():
                 except ColorParseError:
                     border_value_error()
 
+            elif token_name == "scalar":
+                alpha_scalar = Scalar.parse(token.value)
+                if alpha_scalar.unit != Unit.PERCENT:
+                    self.error(name, token, "alpha must be given as a percentage.")
+                border_alpha = alpha_scalar.value / 100.0
+
             else:
                 border_value_error()
 
+        if border_alpha is not None:
+            border_color = border_color.with_alpha(border_alpha)
+
         return normalize_border_value((border_type, border_color))
 
     def _process_border_edge(self, edge: str, name: str, tokens: list[Token]) -> None:
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots.ambr b/tests/snapshot_tests/__snapshots__/test_snapshots.ambr
index ac2a53ff3e..4c6089d71a 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots.ambr
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots.ambr
@@ -158,6 +158,169 @@
   
   '''
 # ---
+# name: test_border_alpha
+  '''
+  <svg class="rich-terminal" viewBox="0 0 994 635.5999999999999" xmlns="http://www.w3.org/2000/svg">
+      <!-- Generated with Rich https://www.textualize.io -->
+      <style>
+  
+      @font-face {
+          font-family: "Fira Code";
+          src: local("FiraCode-Regular"),
+                  url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                  url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+          font-style: normal;
+          font-weight: 400;
+      }
+      @font-face {
+          font-family: "Fira Code";
+          src: local("FiraCode-Bold"),
+                  url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                  url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+          font-style: bold;
+          font-weight: 700;
+      }
+  
+      .terminal-360352576-matrix {
+          font-family: Fira Code, monospace;
+          font-size: 20px;
+          line-height: 24.4px;
+          font-variant-east-asian: full-width;
+      }
+  
+      .terminal-360352576-title {
+          font-size: 18px;
+          font-weight: bold;
+          font-family: arial;
+      }
+  
+      .terminal-360352576-r1 { fill: #121212 }
+  .terminal-360352576-r2 { fill: #0c600c }
+  .terminal-360352576-r3 { fill: #c5c8c6 }
+  .terminal-360352576-r4 { fill: #e1e1e1 }
+  .terminal-360352576-r5 { fill: #e1e1e1;font-weight: bold }
+  .terminal-360352576-r6 { fill: #06ae06 }
+  .terminal-360352576-r7 { fill: #00ff00 }
+  .terminal-360352576-r8 { fill: #60420c }
+  .terminal-360352576-r9 { fill: #065a06 }
+  .terminal-360352576-r10 { fill: #0000ff }
+      </style>
+  
+      <defs>
+      <clipPath id="terminal-360352576-clip-terminal">
+        <rect x="0" y="0" width="975.0" height="584.5999999999999" />
+      </clipPath>
+      <clipPath id="terminal-360352576-line-0">
+      <rect x="0" y="1.5" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-1">
+      <rect x="0" y="25.9" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-2">
+      <rect x="0" y="50.3" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-3">
+      <rect x="0" y="74.7" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-4">
+      <rect x="0" y="99.1" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-5">
+      <rect x="0" y="123.5" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-6">
+      <rect x="0" y="147.9" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-7">
+      <rect x="0" y="172.3" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-8">
+      <rect x="0" y="196.7" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-9">
+      <rect x="0" y="221.1" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-10">
+      <rect x="0" y="245.5" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-11">
+      <rect x="0" y="269.9" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-12">
+      <rect x="0" y="294.3" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-13">
+      <rect x="0" y="318.7" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-14">
+      <rect x="0" y="343.1" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-15">
+      <rect x="0" y="367.5" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-16">
+      <rect x="0" y="391.9" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-17">
+      <rect x="0" y="416.3" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-18">
+      <rect x="0" y="440.7" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-19">
+      <rect x="0" y="465.1" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-20">
+      <rect x="0" y="489.5" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-line-21">
+      <rect x="0" y="513.9" width="976" height="24.65"/>
+              </clipPath>
+  <clipPath id="terminal-360352576-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-360352576-title" fill="#c5c8c6" text-anchor="middle" x="496" y="27">BorderAlphaApp</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-360352576-clip-terminal)">
+      <rect fill="#1e1e1e" x="0" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="1.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="1.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="1.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="1.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="1.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="85.4" y="25.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="134.2" y="25.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="329.4" y="25.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="378.2" y="25.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="573.4" y="25.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="622.2" y="25.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="25.9" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="817.4" y="25.9" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="866.2" y="25.9" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="25.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="50.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="50.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="50.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="50.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="50.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="74.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="74.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="74.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="74.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="74.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="99.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="99.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="99.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="99.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="99.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="123.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="123.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="123.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="123.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="123.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="147.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="147.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="147.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="147.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="147.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="85.4" y="172.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="134.2" y="172.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="329.4" y="172.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="378.2" y="172.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="573.4" y="172.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="622.2" y="172.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="172.3" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="817.4" y="172.3" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="866.2" y="172.3" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="172.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="196.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="196.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="196.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="196.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="196.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="221.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="221.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="221.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="221.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="221.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="245.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="245.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="245.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="245.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="245.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="269.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="269.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="269.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="269.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="269.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="294.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="294.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="294.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="294.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="294.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="85.4" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="134.2" y="318.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="329.4" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="378.2" y="318.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="573.4" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="622.2" y="318.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="318.7" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="817.4" y="318.7" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="866.2" y="318.7" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="318.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="343.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="343.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="343.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="343.1" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="343.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="367.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="367.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="367.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="367.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="367.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="391.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="391.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="391.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="391.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="391.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="416.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="416.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="416.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="416.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="416.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="440.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="440.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="440.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="440.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="440.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="85.4" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="134.2" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="329.4" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="378.2" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="573.4" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="622.2" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="465.1" width="73.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="817.4" y="465.1" width="48.8" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="866.2" y="465.1" width="97.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="465.1" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="489.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="489.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="489.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="489.5" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="489.5" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="513.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="513.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="513.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="513.9" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="513.9" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="538.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="538.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="538.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="538.3" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="538.3" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="0" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="12.2" y="562.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="231.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="244" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="256.2" y="562.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="475.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="488" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="500.2" y="562.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="719.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="732" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="744.2" y="562.7" width="219.6" height="24.65" shape-rendering="crispEdges"/><rect fill="#1e1e1e" x="963.8" y="562.7" width="12.2" height="24.65" shape-rendering="crispEdges"/>
+      <g class="terminal-360352576-matrix">
+      <text class="terminal-360352576-r1" x="0" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┌</text><text class="terminal-360352576-r1" x="12.2" y="20" textLength="219.6" clip-path="url(#terminal-360352576-line-0)">──────────────────</text><text class="terminal-360352576-r1" x="231.8" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┐</text><text class="terminal-360352576-r2" x="244" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┌</text><text class="terminal-360352576-r2" x="256.2" y="20" textLength="219.6" clip-path="url(#terminal-360352576-line-0)">──────────────────</text><text class="terminal-360352576-r2" x="475.8" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┐</text><text class="terminal-360352576-r1" x="488" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┌</text><text class="terminal-360352576-r1" x="500.2" y="20" textLength="219.6" clip-path="url(#terminal-360352576-line-0)">──────────────────</text><text class="terminal-360352576-r1" x="719.8" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┐</text><text class="terminal-360352576-r2" x="732" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┏</text><text class="terminal-360352576-r2" x="744.2" y="20" textLength="219.6" clip-path="url(#terminal-360352576-line-0)">╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍</text><text class="terminal-360352576-r2" x="963.8" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">┓</text><text class="terminal-360352576-r3" x="976" y="20" textLength="12.2" clip-path="url(#terminal-360352576-line-0)">
+  </text><text class="terminal-360352576-r1" x="0" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">│</text><text class="terminal-360352576-r4" x="12.2" y="44.4" textLength="73.2" clip-path="url(#terminal-360352576-line-1)">Widget</text><text class="terminal-360352576-r5" x="85.4" y="44.4" textLength="48.8" clip-path="url(#terminal-360352576-line-1)">#b00</text><text class="terminal-360352576-r1" x="231.8" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">│</text><text class="terminal-360352576-r2" x="244" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">│</text><text class="terminal-360352576-r4" x="256.2" y="44.4" textLength="73.2" clip-path="url(#terminal-360352576-line-1)">Widget</text><text class="terminal-360352576-r5" x="329.4" y="44.4" textLength="48.8" clip-path="url(#terminal-360352576-line-1)">#b01</text><text class="terminal-360352576-r2" x="475.8" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">│</text><text class="terminal-360352576-r1" x="488" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">│</text><text class="terminal-360352576-r4" x="500.2" y="44.4" textLength="73.2" clip-path="url(#terminal-360352576-line-1)">Widget</text><text class="terminal-360352576-r5" x="573.4" y="44.4" textLength="48.8" clip-path="url(#terminal-360352576-line-1)">#b10</text><text class="terminal-360352576-r1" x="719.8" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">│</text><text class="terminal-360352576-r2" x="732" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">╏</text><text class="terminal-360352576-r4" x="744.2" y="44.4" textLength="73.2" clip-path="url(#terminal-360352576-line-1)">Widget</text><text class="terminal-360352576-r5" x="817.4" y="44.4" textLength="48.8" clip-path="url(#terminal-360352576-line-1)">#b11</text><text class="terminal-360352576-r2" x="963.8" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">╏</text><text class="terminal-360352576-r3" x="976" y="44.4" textLength="12.2" clip-path="url(#terminal-360352576-line-1)">
+  </text><text class="terminal-360352576-r1" x="0" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">│</text><text class="terminal-360352576-r1" x="231.8" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">│</text><text class="terminal-360352576-r2" x="244" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">│</text><text class="terminal-360352576-r2" x="475.8" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">│</text><text class="terminal-360352576-r1" x="488" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">│</text><text class="terminal-360352576-r1" x="719.8" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">│</text><text class="terminal-360352576-r2" x="732" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">╏</text><text class="terminal-360352576-r2" x="963.8" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">╏</text><text class="terminal-360352576-r3" x="976" y="68.8" textLength="12.2" clip-path="url(#terminal-360352576-line-2)">
+  </text><text class="terminal-360352576-r1" x="0" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">│</text><text class="terminal-360352576-r1" x="231.8" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">│</text><text class="terminal-360352576-r2" x="244" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">│</text><text class="terminal-360352576-r2" x="475.8" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">│</text><text class="terminal-360352576-r1" x="488" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">│</text><text class="terminal-360352576-r1" x="719.8" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">│</text><text class="terminal-360352576-r2" x="732" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">╏</text><text class="terminal-360352576-r2" x="963.8" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">╏</text><text class="terminal-360352576-r3" x="976" y="93.2" textLength="12.2" clip-path="url(#terminal-360352576-line-3)">
+  </text><text class="terminal-360352576-r1" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">│</text><text class="terminal-360352576-r1" x="231.8" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">│</text><text class="terminal-360352576-r2" x="244" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">│</text><text class="terminal-360352576-r2" x="475.8" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">│</text><text class="terminal-360352576-r1" x="488" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">│</text><text class="terminal-360352576-r1" x="719.8" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">│</text><text class="terminal-360352576-r2" x="732" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">╏</text><text class="terminal-360352576-r2" x="963.8" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">╏</text><text class="terminal-360352576-r3" x="976" y="117.6" textLength="12.2" clip-path="url(#terminal-360352576-line-4)">
+  </text><text class="terminal-360352576-r1" x="0" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">└</text><text class="terminal-360352576-r1" x="12.2" y="142" textLength="219.6" clip-path="url(#terminal-360352576-line-5)">──────────────────</text><text class="terminal-360352576-r1" x="231.8" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">┘</text><text class="terminal-360352576-r2" x="244" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">└</text><text class="terminal-360352576-r2" x="256.2" y="142" textLength="219.6" clip-path="url(#terminal-360352576-line-5)">──────────────────</text><text class="terminal-360352576-r2" x="475.8" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">┘</text><text class="terminal-360352576-r1" x="488" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">└</text><text class="terminal-360352576-r1" x="500.2" y="142" textLength="219.6" clip-path="url(#terminal-360352576-line-5)">──────────────────</text><text class="terminal-360352576-r1" x="719.8" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">┘</text><text class="terminal-360352576-r2" x="732" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">┗</text><text class="terminal-360352576-r2" x="744.2" y="142" textLength="219.6" clip-path="url(#terminal-360352576-line-5)">╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍</text><text class="terminal-360352576-r2" x="963.8" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">┛</text><text class="terminal-360352576-r3" x="976" y="142" textLength="12.2" clip-path="url(#terminal-360352576-line-5)">
+  </text><text class="terminal-360352576-r6" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">┌</text><text class="terminal-360352576-r6" x="12.2" y="166.4" textLength="219.6" clip-path="url(#terminal-360352576-line-6)">──────────────────</text><text class="terminal-360352576-r6" x="231.8" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">┐</text><text class="terminal-360352576-r7" x="244" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">┌</text><text class="terminal-360352576-r7" x="256.2" y="166.4" textLength="219.6" clip-path="url(#terminal-360352576-line-6)">──────────────────</text><text class="terminal-360352576-r7" x="475.8" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">┐</text><text class="terminal-360352576-r6" x="488" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">╭</text><text class="terminal-360352576-r6" x="500.2" y="166.4" textLength="219.6" clip-path="url(#terminal-360352576-line-6)">──────────────────</text><text class="terminal-360352576-r6" x="719.8" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">╮</text><text class="terminal-360352576-r7" x="732" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">+</text><text class="terminal-360352576-r7" x="744.2" y="166.4" textLength="219.6" clip-path="url(#terminal-360352576-line-6)">------------------</text><text class="terminal-360352576-r7" x="963.8" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">+</text><text class="terminal-360352576-r3" x="976" y="166.4" textLength="12.2" clip-path="url(#terminal-360352576-line-6)">
+  </text><text class="terminal-360352576-r6" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">│</text><text class="terminal-360352576-r4" x="12.2" y="190.8" textLength="73.2" clip-path="url(#terminal-360352576-line-7)">Widget</text><text class="terminal-360352576-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-360352576-line-7)">#b02</text><text class="terminal-360352576-r6" x="231.8" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">│</text><text class="terminal-360352576-r7" x="244" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">│</text><text class="terminal-360352576-r4" x="256.2" y="190.8" textLength="73.2" clip-path="url(#terminal-360352576-line-7)">Widget</text><text class="terminal-360352576-r5" x="329.4" y="190.8" textLength="48.8" clip-path="url(#terminal-360352576-line-7)">#b03</text><text class="terminal-360352576-r7" x="475.8" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">│</text><text class="terminal-360352576-r6" x="488" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">│</text><text class="terminal-360352576-r4" x="500.2" y="190.8" textLength="73.2" clip-path="url(#terminal-360352576-line-7)">Widget</text><text class="terminal-360352576-r5" x="573.4" y="190.8" textLength="48.8" clip-path="url(#terminal-360352576-line-7)">#b12</text><text class="terminal-360352576-r6" x="719.8" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">│</text><text class="terminal-360352576-r7" x="732" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">|</text><text class="terminal-360352576-r4" x="744.2" y="190.8" textLength="73.2" clip-path="url(#terminal-360352576-line-7)">Widget</text><text class="terminal-360352576-r5" x="817.4" y="190.8" textLength="48.8" clip-path="url(#terminal-360352576-line-7)">#b13</text><text class="terminal-360352576-r7" x="963.8" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">|</text><text class="terminal-360352576-r3" x="976" y="190.8" textLength="12.2" clip-path="url(#terminal-360352576-line-7)">
+  </text><text class="terminal-360352576-r6" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">│</text><text class="terminal-360352576-r6" x="231.8" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">│</text><text class="terminal-360352576-r7" x="244" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">│</text><text class="terminal-360352576-r7" x="475.8" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">│</text><text class="terminal-360352576-r6" x="488" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">│</text><text class="terminal-360352576-r6" x="719.8" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">│</text><text class="terminal-360352576-r7" x="732" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">|</text><text class="terminal-360352576-r7" x="963.8" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">|</text><text class="terminal-360352576-r3" x="976" y="215.2" textLength="12.2" clip-path="url(#terminal-360352576-line-8)">
+  </text><text class="terminal-360352576-r6" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">│</text><text class="terminal-360352576-r6" x="231.8" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">│</text><text class="terminal-360352576-r7" x="244" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">│</text><text class="terminal-360352576-r7" x="475.8" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">│</text><text class="terminal-360352576-r6" x="488" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">│</text><text class="terminal-360352576-r6" x="719.8" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">│</text><text class="terminal-360352576-r7" x="732" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">|</text><text class="terminal-360352576-r7" x="963.8" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">|</text><text class="terminal-360352576-r3" x="976" y="239.6" textLength="12.2" clip-path="url(#terminal-360352576-line-9)">
+  </text><text class="terminal-360352576-r6" x="0" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">│</text><text class="terminal-360352576-r6" x="231.8" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">│</text><text class="terminal-360352576-r7" x="244" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">│</text><text class="terminal-360352576-r7" x="475.8" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">│</text><text class="terminal-360352576-r6" x="488" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">│</text><text class="terminal-360352576-r6" x="719.8" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">│</text><text class="terminal-360352576-r7" x="732" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">|</text><text class="terminal-360352576-r7" x="963.8" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">|</text><text class="terminal-360352576-r3" x="976" y="264" textLength="12.2" clip-path="url(#terminal-360352576-line-10)">
+  </text><text class="terminal-360352576-r6" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">└</text><text class="terminal-360352576-r6" x="12.2" y="288.4" textLength="219.6" clip-path="url(#terminal-360352576-line-11)">──────────────────</text><text class="terminal-360352576-r6" x="231.8" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">┘</text><text class="terminal-360352576-r7" x="244" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">└</text><text class="terminal-360352576-r7" x="256.2" y="288.4" textLength="219.6" clip-path="url(#terminal-360352576-line-11)">──────────────────</text><text class="terminal-360352576-r7" x="475.8" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">┘</text><text class="terminal-360352576-r6" x="488" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">╰</text><text class="terminal-360352576-r6" x="500.2" y="288.4" textLength="219.6" clip-path="url(#terminal-360352576-line-11)">──────────────────</text><text class="terminal-360352576-r6" x="719.8" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">╯</text><text class="terminal-360352576-r7" x="732" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">+</text><text class="terminal-360352576-r7" x="744.2" y="288.4" textLength="219.6" clip-path="url(#terminal-360352576-line-11)">------------------</text><text class="terminal-360352576-r7" x="963.8" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">+</text><text class="terminal-360352576-r3" x="976" y="288.4" textLength="12.2" clip-path="url(#terminal-360352576-line-11)">
+  </text><text class="terminal-360352576-r1" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┌</text><text class="terminal-360352576-r1" x="12.2" y="312.8" textLength="219.6" clip-path="url(#terminal-360352576-line-12)">──────────────────</text><text class="terminal-360352576-r1" x="231.8" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┐</text><text class="terminal-360352576-r8" x="244" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┌</text><text class="terminal-360352576-r8" x="256.2" y="312.8" textLength="219.6" clip-path="url(#terminal-360352576-line-12)">──────────────────</text><text class="terminal-360352576-r8" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┐</text><text class="terminal-360352576-r1" x="488" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┌</text><text class="terminal-360352576-r1" x="500.2" y="312.8" textLength="219.6" clip-path="url(#terminal-360352576-line-12)">──────────────────</text><text class="terminal-360352576-r1" x="719.8" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┐</text><text class="terminal-360352576-r8" x="732" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┏</text><text class="terminal-360352576-r8" x="744.2" y="312.8" textLength="219.6" clip-path="url(#terminal-360352576-line-12)">╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍</text><text class="terminal-360352576-r8" x="963.8" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">┓</text><text class="terminal-360352576-r3" x="976" y="312.8" textLength="12.2" clip-path="url(#terminal-360352576-line-12)">
+  </text><text class="terminal-360352576-r1" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">│</text><text class="terminal-360352576-r4" x="12.2" y="337.2" textLength="73.2" clip-path="url(#terminal-360352576-line-13)">Widget</text><text class="terminal-360352576-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-360352576-line-13)">#b20</text><text class="terminal-360352576-r1" x="231.8" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">│</text><text class="terminal-360352576-r8" x="244" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">│</text><text class="terminal-360352576-r4" x="256.2" y="337.2" textLength="73.2" clip-path="url(#terminal-360352576-line-13)">Widget</text><text class="terminal-360352576-r5" x="329.4" y="337.2" textLength="48.8" clip-path="url(#terminal-360352576-line-13)">#b21</text><text class="terminal-360352576-r8" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">│</text><text class="terminal-360352576-r1" x="488" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">│</text><text class="terminal-360352576-r4" x="500.2" y="337.2" textLength="73.2" clip-path="url(#terminal-360352576-line-13)">Widget</text><text class="terminal-360352576-r5" x="573.4" y="337.2" textLength="48.8" clip-path="url(#terminal-360352576-line-13)">#b30</text><text class="terminal-360352576-r1" x="719.8" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">│</text><text class="terminal-360352576-r8" x="732" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">╏</text><text class="terminal-360352576-r4" x="744.2" y="337.2" textLength="73.2" clip-path="url(#terminal-360352576-line-13)">Widget</text><text class="terminal-360352576-r5" x="817.4" y="337.2" textLength="48.8" clip-path="url(#terminal-360352576-line-13)">#b31</text><text class="terminal-360352576-r8" x="963.8" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">╏</text><text class="terminal-360352576-r3" x="976" y="337.2" textLength="12.2" clip-path="url(#terminal-360352576-line-13)">
+  </text><text class="terminal-360352576-r1" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">│</text><text class="terminal-360352576-r1" x="231.8" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">│</text><text class="terminal-360352576-r8" x="244" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">│</text><text class="terminal-360352576-r8" x="475.8" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">│</text><text class="terminal-360352576-r1" x="488" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">│</text><text class="terminal-360352576-r1" x="719.8" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">│</text><text class="terminal-360352576-r8" x="732" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">╏</text><text class="terminal-360352576-r8" x="963.8" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">╏</text><text class="terminal-360352576-r3" x="976" y="361.6" textLength="12.2" clip-path="url(#terminal-360352576-line-14)">
+  </text><text class="terminal-360352576-r1" x="0" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">│</text><text class="terminal-360352576-r1" x="231.8" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">│</text><text class="terminal-360352576-r8" x="244" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">│</text><text class="terminal-360352576-r8" x="475.8" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">│</text><text class="terminal-360352576-r1" x="488" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">│</text><text class="terminal-360352576-r1" x="719.8" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">│</text><text class="terminal-360352576-r8" x="732" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">╏</text><text class="terminal-360352576-r8" x="963.8" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">╏</text><text class="terminal-360352576-r3" x="976" y="386" textLength="12.2" clip-path="url(#terminal-360352576-line-15)">
+  </text><text class="terminal-360352576-r1" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">│</text><text class="terminal-360352576-r1" x="231.8" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">│</text><text class="terminal-360352576-r8" x="244" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">│</text><text class="terminal-360352576-r8" x="475.8" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">│</text><text class="terminal-360352576-r1" x="488" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">│</text><text class="terminal-360352576-r1" x="719.8" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">│</text><text class="terminal-360352576-r8" x="732" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">╏</text><text class="terminal-360352576-r8" x="963.8" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">╏</text><text class="terminal-360352576-r3" x="976" y="410.4" textLength="12.2" clip-path="url(#terminal-360352576-line-16)">
+  </text><text class="terminal-360352576-r1" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">└</text><text class="terminal-360352576-r1" x="12.2" y="434.8" textLength="219.6" clip-path="url(#terminal-360352576-line-17)">──────────────────</text><text class="terminal-360352576-r1" x="231.8" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">┘</text><text class="terminal-360352576-r8" x="244" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">└</text><text class="terminal-360352576-r8" x="256.2" y="434.8" textLength="219.6" clip-path="url(#terminal-360352576-line-17)">──────────────────</text><text class="terminal-360352576-r8" x="475.8" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">┘</text><text class="terminal-360352576-r1" x="488" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">└</text><text class="terminal-360352576-r1" x="500.2" y="434.8" textLength="219.6" clip-path="url(#terminal-360352576-line-17)">──────────────────</text><text class="terminal-360352576-r1" x="719.8" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">┘</text><text class="terminal-360352576-r8" x="732" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">┗</text><text class="terminal-360352576-r8" x="744.2" y="434.8" textLength="219.6" clip-path="url(#terminal-360352576-line-17)">╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍</text><text class="terminal-360352576-r8" x="963.8" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">┛</text><text class="terminal-360352576-r3" x="976" y="434.8" textLength="12.2" clip-path="url(#terminal-360352576-line-17)">
+  </text><text class="terminal-360352576-r9" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">┌</text><text class="terminal-360352576-r9" x="12.2" y="459.2" textLength="219.6" clip-path="url(#terminal-360352576-line-18)">──────────────────</text><text class="terminal-360352576-r9" x="231.8" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">┐</text><text class="terminal-360352576-r10" x="244" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">┌</text><text class="terminal-360352576-r10" x="256.2" y="459.2" textLength="219.6" clip-path="url(#terminal-360352576-line-18)">──────────────────</text><text class="terminal-360352576-r10" x="475.8" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">┐</text><text class="terminal-360352576-r9" x="488" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">╭</text><text class="terminal-360352576-r9" x="500.2" y="459.2" textLength="219.6" clip-path="url(#terminal-360352576-line-18)">──────────────────</text><text class="terminal-360352576-r9" x="719.8" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">╮</text><text class="terminal-360352576-r10" x="732" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">+</text><text class="terminal-360352576-r10" x="744.2" y="459.2" textLength="219.6" clip-path="url(#terminal-360352576-line-18)">------------------</text><text class="terminal-360352576-r10" x="963.8" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">+</text><text class="terminal-360352576-r3" x="976" y="459.2" textLength="12.2" clip-path="url(#terminal-360352576-line-18)">
+  </text><text class="terminal-360352576-r9" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">│</text><text class="terminal-360352576-r4" x="12.2" y="483.6" textLength="73.2" clip-path="url(#terminal-360352576-line-19)">Widget</text><text class="terminal-360352576-r5" x="85.4" y="483.6" textLength="48.8" clip-path="url(#terminal-360352576-line-19)">#b22</text><text class="terminal-360352576-r9" x="231.8" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">│</text><text class="terminal-360352576-r10" x="244" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">│</text><text class="terminal-360352576-r4" x="256.2" y="483.6" textLength="73.2" clip-path="url(#terminal-360352576-line-19)">Widget</text><text class="terminal-360352576-r5" x="329.4" y="483.6" textLength="48.8" clip-path="url(#terminal-360352576-line-19)">#b23</text><text class="terminal-360352576-r10" x="475.8" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">│</text><text class="terminal-360352576-r9" x="488" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">│</text><text class="terminal-360352576-r4" x="500.2" y="483.6" textLength="73.2" clip-path="url(#terminal-360352576-line-19)">Widget</text><text class="terminal-360352576-r5" x="573.4" y="483.6" textLength="48.8" clip-path="url(#terminal-360352576-line-19)">#b32</text><text class="terminal-360352576-r9" x="719.8" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">│</text><text class="terminal-360352576-r10" x="732" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">|</text><text class="terminal-360352576-r4" x="744.2" y="483.6" textLength="73.2" clip-path="url(#terminal-360352576-line-19)">Widget</text><text class="terminal-360352576-r5" x="817.4" y="483.6" textLength="48.8" clip-path="url(#terminal-360352576-line-19)">#b33</text><text class="terminal-360352576-r10" x="963.8" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">|</text><text class="terminal-360352576-r3" x="976" y="483.6" textLength="12.2" clip-path="url(#terminal-360352576-line-19)">
+  </text><text class="terminal-360352576-r9" x="0" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">│</text><text class="terminal-360352576-r9" x="231.8" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">│</text><text class="terminal-360352576-r10" x="244" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">│</text><text class="terminal-360352576-r10" x="475.8" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">│</text><text class="terminal-360352576-r9" x="488" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">│</text><text class="terminal-360352576-r9" x="719.8" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">│</text><text class="terminal-360352576-r10" x="732" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">|</text><text class="terminal-360352576-r10" x="963.8" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">|</text><text class="terminal-360352576-r3" x="976" y="508" textLength="12.2" clip-path="url(#terminal-360352576-line-20)">
+  </text><text class="terminal-360352576-r9" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">│</text><text class="terminal-360352576-r9" x="231.8" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">│</text><text class="terminal-360352576-r10" x="244" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">│</text><text class="terminal-360352576-r10" x="475.8" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">│</text><text class="terminal-360352576-r9" x="488" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">│</text><text class="terminal-360352576-r9" x="719.8" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">│</text><text class="terminal-360352576-r10" x="732" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">|</text><text class="terminal-360352576-r10" x="963.8" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">|</text><text class="terminal-360352576-r3" x="976" y="532.4" textLength="12.2" clip-path="url(#terminal-360352576-line-21)">
+  </text><text class="terminal-360352576-r9" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">│</text><text class="terminal-360352576-r9" x="231.8" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">│</text><text class="terminal-360352576-r10" x="244" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">│</text><text class="terminal-360352576-r10" x="475.8" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">│</text><text class="terminal-360352576-r9" x="488" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">│</text><text class="terminal-360352576-r9" x="719.8" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">│</text><text class="terminal-360352576-r10" x="732" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">|</text><text class="terminal-360352576-r10" x="963.8" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">|</text><text class="terminal-360352576-r3" x="976" y="556.8" textLength="12.2" clip-path="url(#terminal-360352576-line-22)">
+  </text><text class="terminal-360352576-r9" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">└</text><text class="terminal-360352576-r9" x="12.2" y="581.2" textLength="219.6" clip-path="url(#terminal-360352576-line-23)">──────────────────</text><text class="terminal-360352576-r9" x="231.8" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">┘</text><text class="terminal-360352576-r10" x="244" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">└</text><text class="terminal-360352576-r10" x="256.2" y="581.2" textLength="219.6" clip-path="url(#terminal-360352576-line-23)">──────────────────</text><text class="terminal-360352576-r10" x="475.8" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">┘</text><text class="terminal-360352576-r9" x="488" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">╰</text><text class="terminal-360352576-r9" x="500.2" y="581.2" textLength="219.6" clip-path="url(#terminal-360352576-line-23)">──────────────────</text><text class="terminal-360352576-r9" x="719.8" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">╯</text><text class="terminal-360352576-r10" x="732" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">+</text><text class="terminal-360352576-r10" x="744.2" y="581.2" textLength="219.6" clip-path="url(#terminal-360352576-line-23)">------------------</text><text class="terminal-360352576-r10" x="963.8" y="581.2" textLength="12.2" clip-path="url(#terminal-360352576-line-23)">+</text>
+      </g>
+      </g>
+  </svg>
+  
+  '''
+# ---
 # name: test_buttons_render
   '''
   <svg class="rich-terminal" viewBox="0 0 994 635.5999999999999" xmlns="http://www.w3.org/2000/svg">
diff --git a/tests/snapshot_tests/snapshot_apps/border_alpha.py b/tests/snapshot_tests/snapshot_apps/border_alpha.py
new file mode 100644
index 0000000000..9b1b02125a
--- /dev/null
+++ b/tests/snapshot_tests/snapshot_apps/border_alpha.py
@@ -0,0 +1,43 @@
+from textual.app import App, ComposeResult
+from textual.containers import Grid
+from textual.widget import Widget
+
+class BorderAlphaApp(App[None]):
+
+    CSS = """
+    Grid {
+        height: 100%;
+        width: 100%;
+        grid-size: 2 2;
+    }
+
+    #b00 { border: 0%; }
+    #b01 { border: 33%; }
+    #b02 { border: 66%; }
+    #b03 { border: 100%; }
+
+    #b10 { border: solid 0%; }
+    #b11 { border: dashed 33%; }
+    #b12 { border: round 66%; }
+    #b13 { border: ascii 100%; }
+
+    #b20 { border: 0% red; }
+    #b21 { border: 33% orange; }
+    #b22 { border: 66% green; }
+    #b23 { border: 100% blue; }
+
+    #b30 { border: solid 0% red; }
+    #b31 { border: dashed 33% orange; }
+    #b32 { border: round 66% green; }
+    #b33 { border: ascii 100% blue; }
+    """
+
+    def compose( self ) -> ComposeResult:
+        with Grid():
+            for outer in range(4):
+                with Grid():
+                    for inner in range(4):
+                        yield Widget(id=f"b{outer}{inner}")
+
+if __name__ == "__main__":
+    BorderAlphaApp().run()
diff --git a/tests/snapshot_tests/test_snapshots.py b/tests/snapshot_tests/test_snapshots.py
index cae6b0c53f..5c07ff8f5b 100644
--- a/tests/snapshot_tests/test_snapshots.py
+++ b/tests/snapshot_tests/test_snapshots.py
@@ -240,6 +240,11 @@ def test_label_widths(snap_compare):
     assert snap_compare(SNAPSHOT_APPS_DIR / "label_widths.py")
 
 
+def test_border_alpha(snap_compare):
+    """Test setting a border alpha."""
+    assert snap_compare(SNAPSHOT_APPS_DIR / "border_alpha.py")
+
+
 def test_auto_width_input(snap_compare):
     assert snap_compare(
         SNAPSHOT_APPS_DIR / "auto_width_input.py", press=["tab", *"Hello"]


Code review comments:
diff_hunk: @@ -462,9 +463,18 @@ def border_value_error():
                 except ColorParseError:
                     border_value_error()
 
+            elif token_name == "scalar":
+                alpha_scalar = Scalar.parse(token.value)
+                if alpha_scalar.unit != Unit.PERCENT:
+                    self.error(name, token, "alpha must be given as a percentage.")
+                border_alpha = alpha_scalar.value / 100.0
+
             else:
                 border_value_error()
 
+        if border_alpha is not None:
+            border_color = border_color.with_alpha(border_alpha)
path: src/textual/css/_styles_builder.py
text: @user1:
I don't think you should set the alpha, but rather multiply it.

If a color has 80% alpha, and you set the alpha value to 50%, then the border color should have 40% alpha.

@author:
As discussed in person, this was following what the `color` property does in CSS right now, so that it worked the same.

As a followup from that conversation, we're going to change how `color` works so that it does the multiplication too, and then this will be modified to work the same (it's likely that we'll have `Color` grow a `multiply_alpha` method, or perhaps even implement `__mul__` (I think I prefer the former over the latter).