Repository: facelessuser/pymdown-extensions

Issue:
Support Pandoc fancy-lists
### Description

> Some aspects of [Pandoc’s Markdown fancy lists](https://pandoc.org/MANUAL.html#extension-fancy_lists) are also accepted in org input, mimicking the option `org-list-allow-alphabetical` in Emacs. As in Org Mode, enabling this extension allows lowercase and uppercase alphabetical markers for ordered lists to be parsed in addition to arabic ones. Note that for Org, this does not include roman numerals or the # placeholder that are enabled by the extension in Pandoc’s Markdown.
> The fancy_lists extension also allows ‘#’ to be used as an ordered list marker in place of a numeral:
>
>     #. one
>     #. two
>
> Note: the ‘#’ ordered list marker doesn’t work with commonmark.

### Benefits

This would allow using roman numerals and alphabets for ordered list bullets, without having to specify `type` or `list-style-type`, which is quite common for nested lists.

### Solution Idea

Another extension to parse additional bullet types besides numbers.

Discussion:
@facelessuser: While it is an interesting idea, it is not likely something I would use. Pydown Extensions is not meant to be a one-stop shop for all Python Markdown extensions, so I am often very selective about what I add.  Generally, if I am to maintain an extension, it is usually one I am interested in personally using as well. In short, I need to be invested in the extension for me to take on supporting it.

Let me sit on this and think about it. It is possible already to wrap blocks in a div with a special class that can use CSS to target them and change the style, but I do get that you want a more convenient approach. I would just need to decide if this is something I'm willing to get behind and take on long term maintenance of.

@gir-bot add P: maybe@facelessuser: I'm exploring the possibility via prototype, but I am not sure if I'm all in yet.

One thing to note, this behaves very Pandoc-like currently in that:

- It supports lists of type `#.`, `1.`, `a.`, `i.`, `#)`, `1)`, `a)`,  `i)`, `(#)`, `(1)`, `(a)`,  and `(i)`. Also capitalized versions.
- Each list type is treated as its own list type, both uppercase and lowercase are treated unique. If starting a new list type, a new list is created and not appended to the previous list.
- The number (or symbol) indicating the start of the list is taken into account and the list will start at that value.
- `pymdownx.saneheaders` is required to be enabled for `#` style lists to work as otherwise they will be identified as headers.
- I'm not sure if I'm 100% sold on `()` style lists or `#` style lists, but implemented everything to understand how it would behave.
- Alpha lists are currently contained to `a` and do not allow `aa`.
- Obviously, there are rules to determine when some roman numerals are assumed roman numerals or alpha lists. Generally new lists are determined to be roman if they start with `i` or `I`  or are wider than one character.
- Roman numerals are checked for validity and are ignored if they are not valid.
- NONE OF THIS IS STRICTLY TESTED CURRENTLY. I've made assertions above, but I have not extensively tested any of this.
- Lastly, all of this is subject to change if/when I decide to support this.

Here is the prototype: https://gist.github.com/facelessuser/a6613237425b78e843c32268ef464e2e@facelessuser: Linking another recent discussion: https://github.com/facelessuser/pymdown-extensions/discussions/2454.@facelessuser: Updated prototype to drop `(marker)` format.  I don't feel that complicating patterns to try and support this when even CommonMark doesn't support it. CommonMark only supports `1.` and `1)`. Python Markdown is not a CommonMark parser, but if they don't even support that, and there is little to no added benefit in doing so except yet another list format, so I'm not going to bother.

I also updated the prototype to follow the Pandoc rule of requiring uppercase, single letter list markers to need at least two spaces after the marker. I would rather keep this rule (which I am sure was added for some reason) and possibly relax it in the future if sufficient testing deemed it unnecessary.@facelessuser: Also fixed some bugs@facelessuser: I should note that `#.` and `#)` are also unique formats, but I may keep them if I move forward with this. I can see the usefulness of generic, numerical list markers.@facelessuser: This is what I'm thinking so far. By default, FancyList would extend list formats such that `1.` and `1)` would work. These formats would be added with functionality similar to [Sane Lists](https://python-markdown.github.io/extensions/sane_lists/) but with the added behavior that swapping list types `1.` vs `1)` would force a new list.

All other formats are probably not supported syntactically in many editors. It's possible not everyone wants such behavior, and might actually control this automatically with CSS when lists are nested, but that's okay. I think additional list formats would be opt-in. You could enable one or all of them if you desire.

Someone using MkDocs might do this to enable all formats; decimal cannot be toggled and is always enabled.

```yaml
markdown_extensions:
  - pymdownx.fancylists:
      addtional_ordered_styles:
      - alpha
      - roman
      - generic
 ```
@facelessuser: Okay, I ended up leaving all the list types enabled by default. Instead, people can opt out of certain list formats.

I have PR with testing available here: #2455 @facelessuser: Okay, I think I may be at a point where I am ready to stop fiddling. There are two inherient conflicts that exist when both alphabetically ordered and Roman numeral ordered lists are enabled.

Alphabetical lists cannot start/restart a list with `I` (or with the lowercase) and Roman numeral lists cannot start/restart a list with `M`, `D`, `C`, `L`, `X`, and `V` (or the lowercase).

This issue also exists in Pandoc, but mitigation is fairly straight forward. We relax the Roman numerals a little  and the use can use things like `VIIIII` for `X` etc. Browsers won't render the list with `VIIIII`, but will render it more strictly as `X`. I think this is a reasonable work around.

```
viiiii. item 10
xi. item 11
```

```html
<ol start="10" type="i">
<li>item 10</li>
<li>item 11</li>
</ol>
```

Alphabetical lists don't have such clean mitigation, but if you have the HTML Block extension enabled, you can work around the `I` case pretty easily. You could use this approach for the above Roman numeral case as well and use the more _proper_ numerals.

```
/// html | ol[start="9"][type="a"]
i. item i
j. item j
///
```

```html
<ol start="9" type="a">
<li>item i</li>
<li>item j</li>
</ol>
```

While maybe not as clean as the the Roman numeral case, it works fine and this case won't likely occur all that often. Pandoc has the same issue, but I don't know if they have a workaround.

Some may assume you can do the following while using `md_in_html`, but it doesn't work so well based on how `md_in_html` handles the elements in the HTML tree. So this doesn't work:

```
<ol start="9" type="i" markdown>
i. item i
j. item j
</ol>
```

You get something more like this, which is not desirable:

``` html
<ol start="9" type="i">
<ol type="i">
<li>item i</li>
</ol>
<ol start="10" type="a">
<li>item j</li>
</ol>
</ol>
```


@facelessuser: I think I'm now open to people willing to test the PR and give feedback: #2455.@facelessuser: Apparently, I implemented `#` lists wrong. It appears they should take on the style of whatever list they are nested under, and if they are in an ambiguous list, they assume normal numbers. I will have to adjust that behavior.@facelessuser: `#` now behaves as expected.@facelessuser: Okay, I added a more targeted workaround to handle alpha vs Roman numeral conflicts. While the HTML Block approach seemed to work at first glance, more complex cases showed that the parser was confused a bit while trying to process child list items from inside an already existing ordered list element.

So now, if you have both alphabetic and Roman numeral lists enabled together, and you have to restart a list with a value that is ambiguous, such as `I` at the start of an alphabetic list, you can just wrap it like so and the first list time will force the creation of an alphabetic list.

```
/// fancylists | type=a
i. item i
j. item j
///
```

Of course, if you only have alphabetic or Roman enabled, there are no conflicts.

I believe all corner cases and mitigations have finally been solved. @facelessuser: I've added an `inject_style` option. CSS is still lacking the case-sensitive flag for attribute selectors in many browsers which can make overriding some CSS that is already styling lists very difficult. `inject_style` will force the `list-style-type` into `ol` tags if enabled.@joapuiib: I'm having trouble with styling different list styles because of that reason.

Using a parenthesis instead of a dot in lower-alpha lists also affect upper-alpha.
```css
.md-typeset ol[type="a"] li::marker {
    content: counter(list-item, lower-alpha) ") ";
}
```

Would `inject_style` help solve this issue?

I assume it would look something like:

```css
.md-typeset ol[style="list-style-type: lower-alpha;"] li::marker {
    content: counter(list-item, lower-alpha) ") ";
}
```

In that case, wouldn't be easier to inject a class and then use it in CSS?@facelessuser: > Using a parenthesis instead of a dot in lower-alpha lists also affect upper-alpha.

Yes, this occurs because only Firefox supports case-sensitive attribute selectors`ol[type="a" s]`. I have no idea why others haven't jumped on this yet.

> Would `inject_style` help solve this issue?

No, all it does is this.

```html
<ol style="list-style-type: lower-roman;" type="i">
<li>Item i</li>
</ol>
```
It works for ensuring the browser renders the lists with the default style for such lists, even when there is other CSS trying to set it to something else. Browsers understand the case sensitivity of the `type` parameter, and it works properly when there is no CSS mucking it up, but attribute selectors are just worthless for targeting them properly until all the browsers finish implementing the spec and add support for the `s` flag.

> In that case, wouldn't be easier to inject a class and then use it in CSS?

The above is easier for the average user as no additional CSS is required from them. I can add an option to inject classes if that is what you desire. Your case is more of a niche case. Most people aren't trying to change the default styling for a list type, but I could certainly facilitate it due to the lack of useful selectors currently in browsers. If I do, I would simply add a class on the `ol` element that indicates the type, probably `fancylists-decimal`, `fancylists-upper-alpha`, `fancylists-lower-alpha`, etc.
@facelessuser: I've also added an option to inject CSS classes. That should satisfy everyone. Those who just want the lists to work can inject styles if they aren't working. Those who want fine control over the lists can inject classes.@joapuiib: > Would inject_style help solve this issue?

Sorry for my phrasing. I meant it would help to solve the issue of selecting each type of list, making it easier to override CSS.

> hose who just want the lists to work can inject styles if they aren't working.

I haven't thought of the idea of browsers not rendering lists correctly.

> I've also added an option to inject CSS classes. That should satisfy everyone. Those who just want the lists to work can inject styles if they aren't working. Those who want fine control over the lists can inject classes.

Thanks! In my particular case, it helps a lot! :smile: @facelessuser: > I haven't thought of the idea of browsers not rendering lists correctly.

I probably phrased this poorly, but as an example, what i mean is like with Mkdocs Material which has preset styles for tiers of lists. A user enabling this plugin just wants them to do what they think they should. As you've seen, just applying CSS to override can be difficult. So inject styles fixes the issue completely.

Injecting styles doesn't fix the problem of CSS targeting for more advance styling, but injecting classes does.@joapuiib: `inject-class` option appends a semicolon `;` at the end of the class:

```m̀d
3. List item number
4. List item number
    a. List item letter
    b. List item letter
        i. List item roman
        ii. List item roman
```
Will prodce:

```html
<ol class="fancylists-decimal;" start="3" type="1">
  <li>List item number</li>
  <li>List item number
  <ol class="fancylists-lower-alpha;" type="a">
    <li>List item letter</li>
      <li>List item letter
          <ol class="fancylists-lower-roman;" type="i">
          <li>List item roman</li>
          <li>List item roma</li>
        </ol>
      </li>
    </ol>
  </li>
</ol>
```@joapuiib: I opened a PR that removes the semicolon: #2464

Solution patch:
diff --git a/LICENSE.md b/LICENSE.md
index 0227a6c90..5c69c8151 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -54,6 +54,23 @@ All changes Copyright 2008-2014 The Python Markdown Project
 License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
 ```
 
+## FancyLists
+
+`fancylists.py` is derived from Python Markdown's list handler.
+
+```
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+```
+
 ## Gemoji Index
 
 `gemoji_db.py` is generated from Gemoji's source code: @github/gemoji.
diff --git a/docs/src/dictionary/en-custom.txt b/docs/src/dictionary/en-custom.txt
index 8e2544de2..d97ab6a9d 100644
--- a/docs/src/dictionary/en-custom.txt
+++ b/docs/src/dictionary/en-custom.txt
@@ -24,6 +24,7 @@ DOM
 De
 Dedent
 Dicts
+Dmitry
 Donath
 ElementTree
 Emmet
@@ -34,6 +35,7 @@ Esc
 EscapeAll
 ExtraRawHTML
 ExtraRawHtml
+FancyLists
 Formatters
 GFM
 GIF
@@ -47,6 +49,7 @@ GitHubEmoji
 GitLab
 GitLab's
 Gitter
+Gruber's
 HeaderAnchor
 HeaderAnchor's
 Hunspell
@@ -83,6 +86,7 @@ PHP
 PNG
 PNGs
 Pandoc
+Pandoc's
 Parsers
 PathConverter
 PathConverter's
@@ -105,12 +109,15 @@ SVG
 SVGs
 SaneHeaders
 Scrollbar
+Shachnev
 Slugify
 SmartSymbols
+Stienstra
 StripHTML
 Stylesheets
 SuperFences
 TODO
+Takhteyev
 Tasklist
 Tidelift
 Toc
@@ -258,6 +265,7 @@ stylesheet
 stylesheets
 subclasses
 sublicense
+subtractive
 superfences
 syntaxes
 th
@@ -270,6 +278,7 @@ un
 underscore's
 unescaping
 unicode
+unindented
 unittest
 unstyled
 uslugify
diff --git a/docs/src/markdown/.snippets/links.md b/docs/src/markdown/.snippets/links.md
index c3d3fd48f..df8b1f7e2 100644
--- a/docs/src/markdown/.snippets/links.md
+++ b/docs/src/markdown/.snippets/links.md
@@ -11,6 +11,7 @@
 [_emoji]: https://github.com/facelessuser/pymdown-extensions/blob/master/pymdownx/emoji.py "Source"
 [_escapeall]: https://github.com/facelessuser/pymdown-extensions/blob/master/pymdownx/escapeall.py "Source"
 [_extra]: https://github.com/facelessuser/pymdown-extensions/blob/master/pymdownx/extra.py "Source"
+[_fancylists]: https://github.com/facelessuser/pymdown-extensions/blob/master/pymdownx/fancylists.py "Source"
 [_highlight]: https://github.com/facelessuser/pymdown-extensions/blob/master/pymdownx/highlight.py "Source"
 [_html_block]: https://github.com/facelessuser/pymdown-extensions/blob/feature/directives/pymdownx/blocks/html.py "Source"
 [_inlinehilite]: https://github.com/facelessuser/pymdown-extensions/blob/master/pymdownx/inlinehilite.py "Source"
@@ -67,6 +68,7 @@
 [nl2br]: https://python-markdown.github.io/extensions/nl2br/
 [octicons]: https://octicons.github.com/
 [onready-event]: https://github.com/facelessuser/pymdown-extensions/blob/master/docs/src/js/extra-uml.js
+[pandoc-lists]: https://pandoc.org/chunkedhtml-demo/8.7-lists.html
 [pep8-naming]: https://pypi.python.org/pypi/pep8-naming
 [pygments]: http://pygments.org/
 [pymdown-styles]: https://github.com/facelessuser/pymdown-styles/tree/master/pymdown_styles
diff --git a/docs/src/markdown/about/changelog.md b/docs/src/markdown/about/changelog.md
index e1b458cc8..a7e6f4163 100644
--- a/docs/src/markdown/about/changelog.md
+++ b/docs/src/markdown/about/changelog.md
@@ -2,6 +2,7 @@
 
 ## 10.10
 
+-   **NEW**: FancyLists: Add new FancyLists extension.
 -   **NEW**: MagicLink: Change social process to support `x` instead of `twitter`. `twitter` is still recognized but is
     now deprecated and will be removed at a future time.
 -   **FIX**: PathConverter: Fixes for latest changes in Python regarding `urlunparse`.
diff --git a/docs/src/markdown/extensions/fancylists.md b/docs/src/markdown/extensions/fancylists.md
new file mode 100644
index 000000000..154e972d0
--- /dev/null
+++ b/docs/src/markdown/extensions/fancylists.md
@@ -0,0 +1,465 @@
+[:octicons-file-code-24:][_fancylists]{: .source-link }
+
+# FancyLists
+
+## Overview
+
+FancyLists is inspired by [Pandoc's list handling][pandoc-lists]. FancyLists extends the list handling formats to
+support parenthesis style lists along with additional ordered formats.
+
+```
+1)  Item 1
+2)  Item 2
+    i.  Item 1
+    ii. Item 2
+        a.  Item a
+        b.  Item b
+            #.  Item 1
+            #.  Item 2
+```
+
+///// html | div.result
+1)  Item 1
+2)  Item 2
+    i.  Item 1
+    ii. Item 2
+        a.  Item a
+        b.  Item b
+            #.  Item 1
+            #.  Item 2
+/////
+
+FancyLists adds the following features:
+
+-   Support ordered lists with either a trailing dot or single right-parenthesis: `1.` or `1)`.
+-   Support ordered lists with roman numeral formats, both lowercase and uppercase. Uppercase is treated as a different
+    list type than lowercase.
+-   Support ordered lists with alphabetical format, both lowercase and uppercase. Uppercase is treated as a different
+    list type than lowercase.
+-   Support a generic ordered list marker via `#.` or `#)`. These can be used in place of numerals and will inherit the
+    type of the current list as long as they use the same convention (`.` or `)`). If used to start a list, decimal
+    format will be assumed. Requires [SaneHeaders](./saneheaders.md) to be enabled.
+-   Using a different list type will start a new list. Trailing dot vs parenthesis are treated as separate types.
+-   Ordered lists are sensitive to the starting value and can restart a list or create a new list using the first value
+    in the list.
+
+Additional ordered list types such as Roman numeral, alphabetical, and generic are optional and can be disabled via
+[options](#options).
+
+Ordered types are controlled by setting the `type` attribute to the appropriate value on the `#!html <ol>` element. If
+you have CSS that overrides styling, you may not see the appropriate types, so if you want control at the Markdown
+level, make sure CSS doesn't override the list styles or see the [styling](#styling) section for more info.
+
+List\ Types             | HTML\ List\ Type
+----------------------- | ----------------
+Decimal                 | 1
+Lowercase Alphabetical  | a
+Uppercase Alphabetical  | A
+Lowercase Roman Numeral | i
+Uppercase Roman Numeral | I
+
+/// note
+We do not support Pandoc's list notation that includes full parentheses (`(marker)`).
+///
+
+```py3
+import markdown
+# SaneHeaders required for generic ordered styles `#.` and `#)`
+md = markdown.Markdown(extensions=['pymdownx.fancylists', 'pymdownx.saneheaders'])
+```
+
+## Syntax
+
+Ordered lists have a number rules to determine when a list item is recognized and when a new list is created/restarted
+vs an item appended to the previous list.
+
+### Ordered List Rules
+
+1.  A new list will be created if the list type changes. This occurs with:
+    a.  A switch between unordered and ordered.
+
+        ```
+        -   Item 1
+        -   Item 2
+        1.  Item 1
+        2.  Item 2
+        ```
+
+        /// html | div.result
+        -   Item 1
+        -   Item 2
+        1.  Item 1
+        2.  Item 2
+        ///
+
+    b.  Change from using trailing dot or single right-parenthesis.
+
+        ```
+        1.  Item 1
+        1.  Item 2
+        1)  Item 1
+        2)  Item 2
+        ```
+
+        /// html | div.result
+        1.  Item 1
+        2.  Item 2
+        1)  Item 1
+        2)  Item 2
+        ///
+
+    c.  A change between using uppercase and lowercase.
+        ```
+        a.  Item a
+        b.  Item a
+        A.  Item A
+        B.  Item B
+        ```
+
+        /// html | div.result
+        a.  Item a
+        b.  Item b
+        A.  Item A
+        B.  Item B
+        ///
+
+    d.  A change in ordered type: numerical, roman numeral, alphabetical, or generic.
+
+        ```
+        #.  Item 1
+        #.  Item 2
+        a.  Item a
+        b.  Item b
+        1.  Item 1
+        2.  Item 2
+        ```
+
+        /// html | div.result
+        #.  Item 1
+        #.  Item 2
+        a.  Item a
+        b.  Item b
+        1.  Item 1
+        2.  Item 2
+        ///
+
+2.  Generic list items inherit type from the current list and if starting a new list will assume the decimal type. List
+    items following a generic list will not cause a new list as long as the list item is consistent with the current
+    list type.
+
+    ```
+    i.  item i
+    #.  item ii
+    #.  item iii
+    iv. item iv
+    ```
+
+    //// html | div.result
+    i.  item i
+    #.  item ii
+    #.  item iii
+    iv. item iv
+    ////
+
+3.  If using uppercase list markers, a list marker consisting of a single uppercase letter followed by a dot will
+    require two spaces after the marker instead of the usual 1 to avoid false positive matches with names that start
+    with an initial.
+
+    ```
+    B. Russell was an English philosopher.
+
+    A.  This is a list.
+    ```
+
+    /// html | div.result
+    B. Russell was an English philosopher.
+
+    A.  This is a list.
+    ///
+
+4.  If a roman numeral consisting of a single letter is used within an alphabetical list (assuming no indication of a
+    list type change) the list item will be treated as an alphabetical list item.  See [special cases](#special-cases)
+    on how to navigate these edge cases.
+
+    ```
+    iii. Item 3
+    iv.  Item 4
+    v.   Item 5
+
+    ---
+
+    v. Item v
+    w. Item w
+    x. Item x
+    ```
+
+    /// html | div.result
+    iii. Item 3
+    iv.  Item 4
+    v.   Item 5
+
+    ---
+
+    v. Item v
+    w. Item w
+    x. Item x
+    ///
+
+5.  If a single letter is used to start a list, it is assumed to be an alphabetical list unless the first letter is `i`
+    or `I`.  See [special cases](#special-cases)
+    on how to navigate these edge cases.
+
+    ```
+    h. Item h
+    i.  Item i
+    j.   Item j
+
+    ---
+
+    i.   Item 1
+    ii.  Item 2
+    iii. Item 3
+    ```
+
+    /// html | div.result
+    h. Item h
+    i.  Item i
+    j.   Item j
+
+    ---
+
+    i.   Item 1
+    ii.  Item 2
+    iii. Item 3
+    ///
+
+### Roman Numeral Rules
+
+The Roman numeral system consists of 7 numerals that are combined to make all the numbers in the system.
+
+Numeral | Decimal
+------- | -------
+I       | 1
+V       | 5
+X       | 10
+L       | 50
+C       | 100
+D       | 500
+M       | 1000
+
+These numbers, depending on how they are combined, are added and subtracted to make bigger numbers.
+
+In modern day, many assume more strict rules, but looking at historical examples, the system was for less strict.
+FancyLists airs on the side of being a little less strict to be more forgiving of user inputs, browsers will always
+render them in a more strict form regardless of what the user inputs.
+
+#### Rules of Addition
+
+When Roman numerals are chained in descending order according to denomination, the values are just added together.
+With that said, there are a few rules as to how the numerals are allowed to be sequenced.
+
+1. Numerals must be arranged in descending order of size.
+2. `D`, `L`, and `V` can each only appear once.
+3. `M`, `C`, and `X` cannot be equaled or exceeded by smaller denominations.
+
+It should be noted that while the user is encouraged to generally follow rule 3 as it is outlined, this is the only rule
+that FancyLists does not explicitly enforce. FancyLists actually enforces the rule as shown below.
+
+> `M`, `C`, and `X` cannot be exceeded by smaller denominations.
+
+Generally, it is recommended to use higher denomination numerals when possible, like using `X` instead of `VIIIII`.
+Despite this recommendation, we allow some flexibility in this area for user input. Additionally, this flexibility makes
+it easier to handle certain [special cases](#special-cases) that we will be covered later. Regardless of how the user
+inputs the numbers, browsers will use a more strict rendering.
+
+#### Rules of Subtraction
+
+When using only additive rules, many Roman numerals can get quite long. Subtractive rules allow for shortening additive
+sequences with shorter subtractive sequences. In subtractive sequences, certain lesser denomination can actually be
+placed before larger denominations, and when done, the lesser denomination is subtracted from the larger denomination.
+As an example, with subtractive rules, `IIII` can be written more simply as `IV` which subtracts 1 from 5. The rules are
+specified below.
+
+1. Only one `I`, `X`, and `C` can be used as the leading numeral in part of a subtractive pair.
+2. When `I`, `X`, and `C` are used as the lead in a subtractive pair, they can't be used immediately after the
+   subtractive pair. So `IXI` is invalid.
+2. `I` can only be placed before `V` and `X`.
+3. `X` can only be placed before `L` and `C`.
+4. `C` can only be placed before `D` and `M`.
+
+### Special Cases
+
+If you've been paying attention, you may have noticed that when alphabetical lists and Roman numeral lists are **both**
+enabled, there arises some ambiguous cases. Currently if `I` occurs in the middle of an alphabetical list, it is assumed
+to be an alphabetical list item, but if it starts a list, it is assumed to be a Roman numeral list item. The reverse is
+is true for `M`, `D`, `C`, `L`, `X`, and `V` where it is assumed that these are Roman numeral list items if they occur
+in the middle of a Roman numeral list, but are assumed to be alphabetical list items if they start a list.
+
+/// note
+It should be noted that these issues exists in pretty much all implementations that support this way of including both
+alphabetically ordered and Roman numeral ordered lists. This is not an issue specific to this implementation.
+///
+
+In the example below, we can see that using `v` in the middle of a Roman numeral list works just fine, but if we try
+and restart/start a new list with `v`, we get an alphabetically ordered list.
+
+```
+iii. item 3
+iv. item 4
+v. item 5
+
+---
+
+v. v
+w. w
+```
+
+/// html | div.result
+iii. item 3
+iv. item 4
+v. item 5
+
+---
+
+v. item v
+w. item w
+///
+
+As noted in ["additive rules"](#rules-of-addition), while we encourage users to generally not represent numerals such as
+`X` with `VIIIII`, we do not enforce the restriction. The reason is for these specific edge cases. In these few
+instances ignoring this rule can help bypass this conflict. If you need to start or restart a Roman numeral list value
+consisting of a single numeral (that is not `I`), we can use the flexibility in the rules to mitigate the issue.
+Regardless of our input, browsers will render these list items in the more common, strict format.
+
+```
+IIIII. Roman numeral V
+
+---
+
+VIIIII. Roman numeral X
+
+---
+
+XXXXX. Roman numeral L
+
+---
+
+LXXXXX. Roman numeral C
+
+---
+
+CCCCC. Roman numeral D
+
+---
+
+DCCCCC. Roman numeral M
+
+```
+
+/// html | div.result
+IIIII. Roman numeral V
+
+---
+
+VIIIII. Roman numeral X
+
+---
+
+XXXXX. Roman numeral L
+
+---
+
+LXXXXX. Roman numeral C
+
+---
+
+CCCCC. Roman numeral D
+
+---
+
+DCCCCC. Roman numeral M
+///
+
+The reverse case, where alphabetical lists cannot start with `I` (or `i`), cannot be mitigated in the aforementioned
+manner, but we can wrap it in a special [Block](./blocks/index.md) and specify the `start` and/or `type` manually. By
+setting the `type` to `a`, we will force the creation of a lowercase alphabetic list and the first list item will be
+included under it, parsing it under the assumption of a lowercase alphabetical list (if possible). If a `start` is
+given, the actual value of the first list item will be ignored.
+
+```
+/// fancylists | type=a
+i. item i
+j. item j
+///
+```
+
+//// html | div.result
+/// fancylists | type=a
+i. item i
+j. item j
+///
+////
+
+This can also be applied to generic lists by also adding `start` value to anchor the first value.
+
+```
+/// fancylists | type=a start=9
+#. item i
+#. item j
+///
+```
+
+//// html | div.result
+/// fancylists | type=a start=9
+#. item i
+#. item j
+///
+////
+
+If a more "strictly correct" mitigation is desired for the earlier mentioned Roman numeral conflict cases, wrapping
+the Roman numeral list will work as well. This allows for the use of more _proper_ Roman numerals.
+
+```
+/// fancylists | type=I
+V.   item V
+VI.  item VI
+///
+```
+
+//// html | div.result
+/// fancylists | type=I
+V.   item V
+VI.  item VI
+///
+////
+
+## Styling
+
+By default, browsers should style ordered list types without any issues, but if you are displaying your content in HTML
+that already provides CSS for lists, you may have to override the CSS. This can sometimes be difficult, and if you want
+to style each type appropriately, CSS is currently lacking as the case sensitive attribute flag is not implemented in
+all browsers to properly target `type=a` vs `type=A`.
+
+To make styling easier, if you are struggling with getting the types properly styled, you can enable the `inject_style`
+[option](#options) to inject a style attribute on each `#!html <ol>` tag that sets the `list-style-type` to the
+appropriate value.
+
+If more advanced CSS styling is desired, and many browsers have not yet implemented the case-sensitive `s` flag for
+attribute selectors, it can be very hard to target an uppercase vs lowercase ordered list. To mitigate this issue,
+a class indicating the current list type can be injected into the `#!html <ol>` element.
+
+CSS\ Classes             |
+------------------------ |
+`fancylists-decimal`     |
+`fancylists-lower-alpha` |
+`fancylists-upper-alpha` |
+`fancylists-lower-roman` |
+`fancylists-upper-roman` |
+
+## Options
+
+Option                      | Type     | Default                               | Description
+--------------------------- | -------- | ------------------------------------- | ------------
+`additional_ordered_styles` | [string] | `#!py3 ['roman', 'alpha', 'generic']` | A list of additional ordered list styles. Accepted inputs: `roman`, `alpha`, and `generic`.
+`inject_style`              | bool     | `#!py3 False`                         | Inject styling into `ol` for list styling.
+`inject_class`              | bool     | `#!py3 False`                         | Inject class into `ol` for list styling.
diff --git a/docs/src/markdown/extensions/saneheaders.md b/docs/src/markdown/extensions/saneheaders.md
index 3b10fa458..bfec9ddf8 100644
--- a/docs/src/markdown/extensions/saneheaders.md
+++ b/docs/src/markdown/extensions/saneheaders.md
@@ -6,10 +6,16 @@
 
 SaneHeaders is an extension that alters the default hashed headers extension to require headers to have spaces after the
 hashes (`#`) in order to be recognized as headers. This allows for other extension syntaxes to use `#` in their syntaxes
-as long as no spaces follow the `#` at the beginning of a line. For instance,
-[MagicLink's issue syntax](./magiclink.md#issues-and-pull-requests) issue syntax uses hashes followed by numbers
-(`#998`) to represent issue links. There may be extensions that use names after hashes to provide tags (`#tag`). With
-SaneHeaders, these syntaxes can coexist. Those familiar with CommonMark may recognize this behavior.
+as long as no spaces follow the `#` at the beginning of a line.
+
+Currently, Pymdown Extensions has two extensions where SaneHeaders can help.
+
+1.  [MagicLink's issue syntax](./magiclink.md#issues-and-pull-requests) uses hashes followed by numbers (`#998`) to
+    represent issue links. There may be extensions that use names after hashes to provide tags (`#tag`). With
+    SaneHeaders, these syntaxes can coexist. Those familiar with CommonMark may recognize this behavior.
+
+2.  [FancyLists' syntax](./fancylists.md) exposes a a generic ordered list style that doesn't require you to provide
+    numbers. This syntax utilize the `#.` marker for list items.
 
 ```py3
 import markdown
diff --git a/docs/src/markdown/index.md b/docs/src/markdown/index.md
index 47e909bc0..28e2c4408 100644
--- a/docs/src/markdown/index.md
+++ b/docs/src/markdown/index.md
@@ -27,14 +27,14 @@ aware of when using these extensions.
 
 ## Extensions
 
-&nbsp;                                       | Extensions                               | &nbsp;
--------------------------------------------- | ---------------------------------------- | ------
-[Arithmatex](extensions/arithmatex.md)       | [B64](extensions/b64.md)                 | [BetterEm](extensions/betterem.md)
-[Blocks](extensions/blocks/index.md)         | [Caret](extensions/caret.md)             | [Critic](extensions/critic.md)
-[Details](extensions/details.md)             | [Emoji](extensions/emoji.md)             | [EscapeAll](extensions/escapeall.md)
-[Extra](extensions/extra.md)                 | [Highlight](extensions/highlight.md)     | [InlineHilite](extensions/inlinehilite.md)
-[Keys](extensions/keys.md)                   | [MagicLink](extensions/magiclink.md)     | [Mark](extensions/mark.md)
-[PathConverter](extensions/pathconverter.md) | [ProgressBar](extensions/progressbar.md) | [SaneHeaders](extensions/saneheaders.md)
-[SmartSymbols](extensions/smartsymbols.md)   | [Snippets](extensions/snippets.md)       | [StripHTML](extensions/striphtml.md)
-[SuperFences](extensions/superfences.md)     | [Tabbed](extensions/tabbed.md)           | [Tasklist](extensions/tasklist.md)
-[Tilde](extensions/tilde.md)                 |                                          |
+&nbsp;                                       | Extensions                                   | &nbsp;
+-------------------------------------------- | -------------------------------------------- | ------
+[Arithmatex](extensions/arithmatex.md)       | [B64](extensions/b64.md)                     | [BetterEm](extensions/betterem.md)
+[Blocks](extensions/blocks/index.md)         | [Caret](extensions/caret.md)                 | [Critic](extensions/critic.md)
+[Details](extensions/details.md)             | [Emoji](extensions/emoji.md)                 | [EscapeAll](extensions/escapeall.md)
+[Extra](extensions/extra.md)                 | [FancyLists](extensions/fancylists.md)       | [Highlight](extensions/highlight.md)
+[InlineHilite](extensions/inlinehilite.md)   | [Keys](extensions/keys.md)                   | [MagicLink](extensions/magiclink.md)
+[Mark](extensions/mark.md)                   | [PathConverter](extensions/pathconverter.md) | [ProgressBar](extensions/progressbar.md)
+[SaneHeaders](extensions/saneheaders.md)     | [SmartSymbols](extensions/smartsymbols.md)   | [Snippets](extensions/snippets.md)
+[StripHTML](extensions/striphtml.md)         | [SuperFences](extensions/superfences.md)     | [Tabbed](extensions/tabbed.md)
+[Tasklist](extensions/tasklist.md)           | [Tilde](extensions/tilde.md)
diff --git a/docs/src/mkdocs.yml b/docs/src/mkdocs.yml
index 0e80840a4..6d6d3e684 100644
--- a/docs/src/mkdocs.yml
+++ b/docs/src/mkdocs.yml
@@ -58,6 +58,7 @@ nav:
     - Emoji: extensions/emoji.md
     - EscapeAll: extensions/escapeall.md
     - Extra: extensions/extra.md
+    - FancyLists: extensions/fancylists.md
     - Highlight: extensions/highlight.md
     - InlineHilite: extensions/inlinehilite.md
     - Keys: extensions/keys.md
@@ -172,6 +173,8 @@ markdown_extensions:
   - pymdownx.tabbed:
       alternate_style: true
   - pymdownx.saneheaders:
+  - pymdownx.fancylists:
+      inject_style: true
   - pymdownx.blocks.admonition:
       types:
       - new
diff --git a/docs/src/scss/_material.scss b/docs/src/scss/_material.scss
index f25c6522c..77f3b1653 100644
--- a/docs/src/scss/_material.scss
+++ b/docs/src/scss/_material.scss
@@ -155,8 +155,9 @@ html {
   }
 }
 
-/* Don't force capitalization of `H5` elements. */
 .md-typeset {
+
+  /* Don't force capitalization of `H5` elements. */
   h5 {
     color: var(--md-text-color);
     text-transform: none;
diff --git a/docs/theme/assets/pymdownx-extras/extra-8611f6c398.css.map b/docs/theme/assets/pymdownx-extras/extra-8611f6c398.css.map
index 6b903ae7c..038442e4a 100644
--- a/docs/theme/assets/pymdownx-extras/extra-8611f6c398.css.map
+++ b/docs/theme/assets/pymdownx-extras/extra-8611f6c398.css.map
@@ -1 +1 @@
-{"version":3,"sources":["palette/_colors.scss","extra.css","_general.scss","extensions/_admonition.scss","extensions/_arithmatex.scss","extensions/_critic.scss","extensions/_details.scss","extensions/_highlight.scss","extensions/_keys.scss","extensions/_magiclink.scss","extensions/_mark.scss","extensions/_progressbar.scss","extensions/_tabbed.scss","extensions/_tables.scss","extensions/_tasklist.scss","extensions/_toc.scss","extensions/_superfences.scss","_material.scss","utilities/_break.scss"],"names":[],"mappings":"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","file":"extra-8611f6c398.css","sourcesContent":["@import \"./dracula\";\n\n:root > * {\n  // Custom code colors\n  --md-code-link-bg-color: hsla(0, 0%, 96%, 1);\n  --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n  --md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);\n  --md-code-title-bg-color: var(--md-code-bg-color);\n  --md-code-inline-bg-color: var(--md-code-bg-color);\n\n  --md-code-special-bg-color: #{darken(hsl(0, 0%, 96%), 5%)};\n  --md-code-alternate-bg-color: var(--md-code-bg-color);\n\n  --md-code-hl-punctuation-color: var(--md-code-fg-color);\n  --md-code-hl-namespace-color: var(--md-code-fg-color);\n\n  --md-code-hl-entity-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-tag-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-builtin-color: var(--md-code-hl-constant-color);\n  --md-code-hl-class-color: var(--md-code-hl-function-color);\n\n  // Various Material related color variables\n  --md-typeset-a-color: #{$clr-cyan-500};\n\n  // Progressbar colors\n  --md-progress-stripe: var(--md-default-bg-color--lighter);\n  --md-progress-100: #{$clr-green-a400};\n  --md-progress-80: #{$clr-green-a400};\n  --md-progress-60: #{$clr-yellow-700};\n  --md-progress-40: #{$clr-orange-a400};\n  --md-progress-20: #{$clr-red-a200};\n  --md-progress-0: #{$clr-red-a400};\n\n  // Keys colors\n  --md-typeset-kbd-color: #{shade(hsla(0, 100%, 100%, 1), 8%)};\n  --md-typeset-kbd-border-color: #{shade(hsla(0, 100%, 100%, 1), 28%)};\n  --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1);\n\n  &[data-md-color-scheme=\"slate\"] {\n    // Custom code colors\n    --md-code-link-bg-color: hsla(232, 15%, 15%, 1);\n    --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n    --md-code-special-bg-color: #{lighten(hsl(232, 15%, 15%), 5%)};\n    --md-default-bg-color--trans: hsla(232,15%,15%, 0);\n\n    // Keys colors\n    --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n    --md-typeset-kbd-border-color: #{darken(rgb(46, 48, 62), 9%)};\n    --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n  }\n\n  // Dark mode color changes\n  &[data-md-color-scheme=\"dracula\"] {\n    // Default color shades\n    --md-default-fg-color:               #{transparentize($drac-fg, 0.13)};\n    --md-default-fg-color--light:        #{transparentize($drac-fg, 0.46)};\n    --md-default-fg-color--lighter:      #{transparentize($drac-fg, 0.84)};\n    --md-default-fg-color--lightest:     #{transparentize($drac-fg, 0.93)};\n    --md-default-autocomplete-fg-color:  #{transparentize($drac-fg, 0.60)};\n    --md-shadow-z2:                      0 #{px2rem(4px)} #{px2rem(10px)} hsla(0, 0%, 0%, 0.3),\n                                         0 0              #{px2rem(1px)}  hsla(0, 0%, 0%, 0.2);\n\n    --md-default-bg-color:               var(--md-default-bg-color--darkest);\n    --md-default-bg-color--light:        #{transparentize($drac-default-bg, 0.3)};\n    --md-default-bg-color--lighter:      #{transparentize($drac-default-bg, 0.7)};\n    --md-default-bg-color--lightest:     #{transparentize($drac-default-bg, 0.88)};\n    --md-default-bg-color--trans:        #{transparentize($drac-default-bg, 1)};\n\n    // Dark specific colors\n    --md-default-bg-color--dark:         #{darken($drac-default-bg, 3%)};\n    --md-default-bg-color--darker:       #{darken($drac-default-bg, 6%)};\n    --md-default-bg-color--darkest:      #{darken($drac-default-bg, 9%)};\n    --md-default-bg-color--ultra-dark:   #{darken($drac-default-bg, 15%)};\n\n    // General text\n    --md-text-color: var(--md-default-fg-color);\n    --md-typeset-color: var(--md-default-fg-color);\n\n    // Admonition colors\n    --md-admonition-fg-color: var(--md-default-fg-color);\n\n    // Code colors\n    --md-code-fg-color: #{$drac-fg};\n    --md-code-bg-color: #{$drac-bg};\n    --md-code-title-bg-color: var(--md-default-bg-color--ultra-dark);\n    --md-code-inline-bg-color: #{lighten($drac-bg, 5%)};\n    --md-code-hl-operator-color: #{$drac-pink};\n    --md-code-hl-punctuation-color: #{$drac-fg};\n    --md-code-hl-string-color: #{$drac-yellow};\n    --md-code-hl-special-color: #{$drac-purple};\n    --md-code-hl-number-color: #{$drac-purple};\n    --md-code-hl-keyword-color: #{$drac-pink};\n    --md-code-hl-name-color: #{$drac-fg};\n    --md-code-hl-constant-color: #{$drac-purple};\n    --md-code-hl-function-color: #{$drac-green};\n    --md-code-hl-comment-color: #{$drac-blue};\n    --md-code-hl-variable-color: #{$drac-orange};\n    --md-code-hl-generic-color: #{$drac-blue};\n    --md-code-hl-color: #{$drac-selection};\n\n    // Custom code colors\n    --md-code-hl-entity-color: #{$drac-green};\n    --md-code-hl-tag-color: #{$drac-pink};\n    --md-code-hl-namespace-color: #{$drac-fg};\n    --md-code-hl-builtin-color: #{$drac-cyan};\n    --md-code-hl-class-color: #{$drac-cyan};\n\n    --md-code-special-bg-color: #{darken($drac-bg, 5%)};\n    --md-code-alternate-bg-color: #{tint($drac-bg, 10%)};\n    --md-code-link-bg-color: #{mix($drac-cyan, $drac-bg, 15%)};\n\n    // Various Material related color variables\n    --md-typeset-a-color: #{$drac-cyan};\n    --md-typeset-mark-color: #{mix($drac-yellow, $drac-bg, 35%)};\n    --md-typeset-del-color: #{mix($drac-pink, $drac-bg, 35%)};\n    --md-typeset-ins-color: #{mix($drac-green, $drac-bg, 35%)};\n\n    // Progressbar colors\n    --md-progress-stripe: var(--md-default-bg-color--lightest);\n    --md-progress-100: #{$drac-green};\n    --md-progress-80: #{$drac-light-green};\n    --md-progress-60: #{$drac-yellow};\n    --md-progress-40: #{$drac-orange};\n    --md-progress-20: #{$drac-pink};\n    --md-progress-0: #{$drac-red};\n\n    // Keys colors\n    --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n    --md-typeset-kbd-border-color: var(--md-default-bg-color--ultra-dark);\n    --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n  }\n}\n\n// ----------------------------------------------------------------------------\n// Rules: primary colors\n// ----------------------------------------------------------------------------\n\n@each $name, $colors in (\n  \"red\":         $drac-red         lighten($drac-red, 5%)   darken($drac-red, 5%),\n  \"pink\":        $drac-pink        lighten($drac-pink, 5%)   darken($drac-pink, 5%),\n  \"purple\":      $drac-purple      lighten($drac-purple, 5%)   darken($drac-purple, 5%),\n  \"deep-purple\": $drac-purple      lighten($drac-purple, 5%)   darken($drac-purple, 5%),\n  \"blue\":        $drac-blue        lighten($drac-blue, 5%)   darken($drac-blue, 5%),\n  \"indigo\":      $drac-blue        lighten($drac-blue, 5%)   darken($drac-blue, 5%),\n  \"light-blue\":  $drac-blue        lighten($drac-blue, 5%)   darken($drac-blue, 5%),\n  \"cyan\":        $drac-cyan        lighten($drac-cyan, 5%)   darken($drac-cyan, 5%),\n  \"teal\":        $drac-cyan        lighten($drac-cyan, 5%)   darken($drac-cyan, 5%),\n  \"green\":       $drac-green       lighten($drac-green, 5%)   darken($drac-green, 5%),\n  \"light-green\": $drac-green       lighten($drac-green, 5%)   darken($drac-green, 5%),\n  \"lime\":        $drac-green       lighten($drac-green, 5%)   darken($drac-green, 5%),\n  \"yellow\":      $drac-yellow      lighten($drac-yellow, 5%)   darken($drac-yellow, 5%),\n  \"amber\":       $drac-yellow      lighten($drac-yellow, 5%)   darken($drac-yellow, 5%),\n  \"orange\":      $drac-orange      lighten($drac-orange, 5%)   darken($drac-orange, 5%),\n  \"deep-orange\": $drac-orange      lighten($drac-orange, 5%)   darken($drac-orange, 5%)\n) {\n\n  // Color palette\n  [data-md-color-scheme=\"dracula\"][data-md-color-primary=\"#{$name}\"],\n  [data-md-color-scheme=\"dracula\"] :not([data-md-color-scheme])[data-md-color-primary=\"#{$name}\"]\n   {\n\n    --md-primary-code-bg-color:         #{mix($drac-bg, nth($colors, 1), 85%)};\n    --md-primary-fg-color:              hsla(#{hex2hsl(nth($colors, 1))}, 1);\n    --md-primary-fg-color--transparent: hsla(#{hex2hsl(nth($colors, 1))}, 0.1);\n    --md-primary-fg-color--light:       hsla(#{hex2hsl(nth($colors, 2))}, 1);\n    --md-primary-fg-color--dark:        hsla(#{hex2hsl(nth($colors, 3))}, 1);\n    --md-primary-bg-color:              var(--md-default-bg-color);\n    --md-primary-bg-color--light:       var(--md-default-bg-color--light);\n  }\n}\n\n// ----------------------------------------------------------------------------\n// Rules: accent colors\n// ----------------------------------------------------------------------------\n\n@each $name, $color in (\n  \"red\":         darken($drac-red, 5%),\n  \"pink\":        darken($drac-pink, 5%),\n  \"purple\":      darken($drac-purple, 5%),\n  \"deep-purple\": darken($drac-purple, 5%),\n  \"blue\":        darken($drac-blue, 5%),\n  \"indigo\":      darken($drac-blue, 5%),\n  \"light-blue\":  darken($drac-blue, 5%),\n  \"cyan\":        darken($drac-cyan, 5%),\n  \"teal\":        darken($drac-cyan, 5%),\n  \"green\":       darken($drac-green, 5%),\n  \"light-green\": darken($drac-green, 5%),\n  \"lime\":        darken($drac-green, 5%),\n  \"yellow\":      darken($drac-yellow, 5%),\n  \"amber\":       darken($drac-yellow, 5%),\n  \"orange\":      darken($drac-orange, 5%),\n  \"deep-orange\": darken($drac-orange, 5%)\n) {\n\n  // Color palette\n  [data-md-color-scheme=\"dracula\"][data-md-color-accent=\"#{$name}\"],\n  [data-md-color-scheme=\"dracula\"] :not([data-md-color-scheme])[data-md-color-primary=\"#{$name}\"] {\n    --md-code-link-accent-bg-color:    #{mix($color, $drac-bg, 15%)};\n    --md-accent-fg-color:              hsla(#{hex2hsl($color)}, 1);\n    --md-accent-fg-color--transparent: hsla(#{hex2hsl($color)}, 0.1);\n    --md-accent-bg-color:              var(--md-default-bg-color);\n    --md-accent-bg-color--light:       var(--md-default-bg-color--light);\n  }\n}\n","@charset \"UTF-8\";\n:root > * {\n  --md-code-link-bg-color: hsla(0, 0%, 96%, 1);\n  --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n  --md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);\n  --md-code-title-bg-color: var(--md-code-bg-color);\n  --md-code-inline-bg-color: var(--md-code-bg-color);\n  --md-code-special-bg-color: #e8e8e8;\n  --md-code-alternate-bg-color: var(--md-code-bg-color);\n  --md-code-hl-punctuation-color: var(--md-code-fg-color);\n  --md-code-hl-namespace-color: var(--md-code-fg-color);\n  --md-code-hl-entity-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-tag-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-builtin-color: var(--md-code-hl-constant-color);\n  --md-code-hl-class-color: var(--md-code-hl-function-color);\n  --md-typeset-a-color: #00bcd4;\n  --md-progress-stripe: var(--md-default-bg-color--lighter);\n  --md-progress-100: #00e676;\n  --md-progress-80: #00e676;\n  --md-progress-60: #fbc02d;\n  --md-progress-40: #ff9100;\n  --md-progress-20: #ff5252;\n  --md-progress-0: #ff1744;\n  --md-typeset-kbd-color: #ebebeb;\n  --md-typeset-kbd-border-color: #b8b8b8;\n  --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1);\n}\n:root > *[data-md-color-scheme=slate] {\n  --md-code-link-bg-color: hsla(232, 15%, 15%, 1);\n  --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n  --md-code-special-bg-color: #2b2d3b;\n  --md-default-bg-color--trans: hsla(232,15%,15%, 0);\n  --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n  --md-typeset-kbd-border-color: #1a1c24;\n  --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-default-fg-color: rgba(248, 248, 242, 0.87);\n  --md-default-fg-color--light: rgba(248, 248, 242, 0.54);\n  --md-default-fg-color--lighter: rgba(248, 248, 242, 0.16);\n  --md-default-fg-color--lightest: rgba(248, 248, 242, 0.07);\n  --md-default-autocomplete-fg-color: rgba(248, 248, 242, 0.4);\n  --md-shadow-z2: 0 0.2rem 0.5rem hsla(0, 0%, 0%, 0.3),\n                                       0 0 0.05rem hsla(0, 0%, 0%, 0.2);\n  --md-default-bg-color: var(--md-default-bg-color--darkest);\n  --md-default-bg-color--light: rgba(50, 52, 67, 0.7);\n  --md-default-bg-color--lighter: rgba(50, 52, 67, 0.3);\n  --md-default-bg-color--lightest: rgba(50, 52, 67, 0.12);\n  --md-default-bg-color--trans: rgba(50, 52, 67, 0);\n  --md-default-bg-color--dark: #2b2e3b;\n  --md-default-bg-color--darker: #252732;\n  --md-default-bg-color--darkest: #1e2029;\n  --md-default-bg-color--ultra-dark: #111217;\n  --md-text-color: var(--md-default-fg-color);\n  --md-typeset-color: var(--md-default-fg-color);\n  --md-admonition-fg-color: var(--md-default-fg-color);\n  --md-code-fg-color: hsl(60, 30%, 96%);\n  --md-code-bg-color: hsl(231, 15%, 18%);\n  --md-code-title-bg-color: var(--md-default-bg-color--ultra-dark);\n  --md-code-inline-bg-color: #323443;\n  --md-code-hl-operator-color: hsl(326, 100%, 74%);\n  --md-code-hl-punctuation-color: hsl(60, 30%, 96%);\n  --md-code-hl-string-color: hsl(65, 92%, 76%);\n  --md-code-hl-special-color: hsl(265, 89%, 78%);\n  --md-code-hl-number-color: hsl(265, 89%, 78%);\n  --md-code-hl-keyword-color: hsl(326, 100%, 74%);\n  --md-code-hl-name-color: hsl(60, 30%, 96%);\n  --md-code-hl-constant-color: hsl(265, 89%, 78%);\n  --md-code-hl-function-color: hsl(135, 94%, 65%);\n  --md-code-hl-comment-color: hsl(225, 27%, 51%);\n  --md-code-hl-variable-color: hsl(31, 100%, 71%);\n  --md-code-hl-generic-color: hsl(225, 27%, 51%);\n  --md-code-hl-color: hsl(231, 25%, 25%);\n  --md-code-hl-entity-color: hsl(135, 94%, 65%);\n  --md-code-hl-tag-color: hsl(326, 100%, 74%);\n  --md-code-hl-namespace-color: hsl(60, 30%, 96%);\n  --md-code-hl-builtin-color: hsl(191, 97%, 77%);\n  --md-code-hl-class-color: hsl(191, 97%, 77%);\n  --md-code-special-bg-color: #1c1e26;\n  --md-code-alternate-bg-color: #3d3e49;\n  --md-code-link-bg-color: #364653;\n  --md-typeset-a-color: hsl(191, 97%, 77%);\n  --md-typeset-mark-color: #6e7252;\n  --md-typeset-del-color: #734568;\n  --md-typeset-ins-color: #36724e;\n  --md-progress-stripe: var(--md-default-bg-color--lightest);\n  --md-progress-100: hsl(135, 94%, 65%);\n  --md-progress-80: hsl(135, 92%, 79%);\n  --md-progress-60: hsl(65, 92%, 76%);\n  --md-progress-40: hsl(31, 100%, 71%);\n  --md-progress-20: hsl(326, 100%, 74%);\n  --md-progress-0: hsl(0, 100%, 67%);\n  --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n  --md-typeset-kbd-border-color: var(--md-default-bg-color--ultra-dark);\n  --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=red],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=red] {\n  --md-primary-code-bg-color: #47303a;\n  --md-primary-fg-color: hsla(0deg, 100%, 67%, 1);\n  --md-primary-fg-color--transparent: hsla(0deg, 100%, 67%, 0.1);\n  --md-primary-fg-color--light: hsla(0deg, 100%, 72%, 1);\n  --md-primary-fg-color--dark: hsla(0deg, 100%, 62%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=pink],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=pink] {\n  --md-primary-code-bg-color: #47354b;\n  --md-primary-fg-color: hsla(326deg, 100%, 74%, 1);\n  --md-primary-fg-color--transparent: hsla(326deg, 100%, 74%, 0.1);\n  --md-primary-fg-color--light: hsla(326deg, 100%, 79%, 1);\n  --md-primary-fg-color--dark: hsla(326deg, 100%, 69%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=purple] {\n  --md-primary-code-bg-color: #3e3952;\n  --md-primary-fg-color: hsla(265deg, 89%, 78%, 1);\n  --md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.1);\n  --md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);\n  --md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=deep-purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-purple] {\n  --md-primary-code-bg-color: #3e3952;\n  --md-primary-fg-color: hsla(265deg, 89%, 78%, 1);\n  --md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.1);\n  --md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);\n  --md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=blue] {\n  --md-primary-code-bg-color: #303446;\n  --md-primary-fg-color: hsla(225deg, 27%, 51%, 1);\n  --md-primary-fg-color--transparent: hsla(225deg, 27%, 51%, 0.1);\n  --md-primary-fg-color--light: hsla(225deg, 27%, 56%, 1);\n  --md-primary-fg-color--dark: hsla(225deg, 27%, 46%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=indigo],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=indigo] {\n  --md-primary-code-bg-color: #303446;\n  --md-primary-fg-color: hsla(225deg, 27%, 51%, 1);\n  --md-primary-fg-color--transparent: hsla(225deg, 27%, 51%, 0.1);\n  --md-primary-fg-color--light: hsla(225deg, 27%, 56%, 1);\n  --md-primary-fg-color--dark: hsla(225deg, 27%, 46%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=light-blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-blue] {\n  --md-primary-code-bg-color: #303446;\n  --md-primary-fg-color: hsla(225deg, 27%, 51%, 1);\n  --md-primary-fg-color--transparent: hsla(225deg, 27%, 51%, 0.1);\n  --md-primary-fg-color--light: hsla(225deg, 27%, 56%, 1);\n  --md-primary-fg-color--dark: hsla(225deg, 27%, 46%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=cyan],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=cyan] {\n  --md-primary-code-bg-color: #364653;\n  --md-primary-fg-color: hsla(191deg, 97%, 77%, 1);\n  --md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.1);\n  --md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);\n  --md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=teal],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=teal] {\n  --md-primary-code-bg-color: #364653;\n  --md-primary-fg-color: hsla(191deg, 97%, 77%, 1);\n  --md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.1);\n  --md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);\n  --md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=green] {\n  --md-primary-code-bg-color: #2d4840;\n  --md-primary-fg-color: hsla(135deg, 94%, 65%, 1);\n  --md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.1);\n  --md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);\n  --md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=light-green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-green] {\n  --md-primary-code-bg-color: #2d4840;\n  --md-primary-fg-color: hsla(135deg, 94%, 65%, 1);\n  --md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.1);\n  --md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);\n  --md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=lime],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=lime] {\n  --md-primary-code-bg-color: #2d4840;\n  --md-primary-fg-color: hsla(135deg, 94%, 65%, 1);\n  --md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.1);\n  --md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);\n  --md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=yellow],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=yellow] {\n  --md-primary-code-bg-color: #454842;\n  --md-primary-fg-color: hsla(65deg, 92%, 76%, 1);\n  --md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.1);\n  --md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);\n  --md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=amber],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=amber] {\n  --md-primary-code-bg-color: #454842;\n  --md-primary-fg-color: hsla(65deg, 92%, 76%, 1);\n  --md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.1);\n  --md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);\n  --md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=orange] {\n  --md-primary-code-bg-color: #473e3d;\n  --md-primary-fg-color: hsla(31deg, 100%, 71%, 1);\n  --md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.1);\n  --md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);\n  --md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=deep-orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-orange] {\n  --md-primary-code-bg-color: #473e3d;\n  --md-primary-fg-color: hsla(31deg, 100%, 71%, 1);\n  --md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.1);\n  --md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);\n  --md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=red],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=red] {\n  --md-code-link-accent-bg-color: #472c36;\n  --md-accent-fg-color: hsla(0deg, 100%, 62%, 1);\n  --md-accent-fg-color--transparent: hsla(0deg, 100%, 62%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=pink],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=pink] {\n  --md-code-link-accent-bg-color: #473149;\n  --md-accent-fg-color: hsla(326deg, 100%, 69%, 1);\n  --md-accent-fg-color--transparent: hsla(326deg, 100%, 69%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=purple] {\n  --md-code-link-accent-bg-color: #3c3652;\n  --md-accent-fg-color: hsla(265deg, 89%, 73%, 1);\n  --md-accent-fg-color--transparent: hsla(265deg, 89%, 73%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=deep-purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-purple] {\n  --md-code-link-accent-bg-color: #3c3652;\n  --md-accent-fg-color: hsla(265deg, 89%, 73%, 1);\n  --md-accent-fg-color--transparent: hsla(265deg, 89%, 73%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=blue] {\n  --md-code-link-accent-bg-color: #2e3243;\n  --md-accent-fg-color: hsla(225deg, 27%, 46%, 1);\n  --md-accent-fg-color--transparent: hsla(225deg, 27%, 46%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=indigo],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=indigo] {\n  --md-code-link-accent-bg-color: #2e3243;\n  --md-accent-fg-color: hsla(225deg, 27%, 46%, 1);\n  --md-accent-fg-color--transparent: hsla(225deg, 27%, 46%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=light-blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-blue] {\n  --md-code-link-accent-bg-color: #2e3243;\n  --md-accent-fg-color: hsla(225deg, 27%, 46%, 1);\n  --md-accent-fg-color--transparent: hsla(225deg, 27%, 46%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=cyan],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=cyan] {\n  --md-code-link-accent-bg-color: #324553;\n  --md-accent-fg-color: hsla(191deg, 97%, 72%, 1);\n  --md-accent-fg-color--transparent: hsla(191deg, 97%, 72%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=teal],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=teal] {\n  --md-code-link-accent-bg-color: #324553;\n  --md-accent-fg-color: hsla(191deg, 97%, 72%, 1);\n  --md-accent-fg-color--transparent: hsla(191deg, 97%, 72%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=green] {\n  --md-code-link-accent-bg-color: #2a483d;\n  --md-accent-fg-color: hsla(135deg, 94%, 60%, 1);\n  --md-accent-fg-color--transparent: hsla(135deg, 94%, 60%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=light-green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-green] {\n  --md-code-link-accent-bg-color: #2a483d;\n  --md-accent-fg-color: hsla(135deg, 94%, 60%, 1);\n  --md-accent-fg-color--transparent: hsla(135deg, 94%, 60%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=lime],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=lime] {\n  --md-code-link-accent-bg-color: #2a483d;\n  --md-accent-fg-color: hsla(135deg, 94%, 60%, 1);\n  --md-accent-fg-color--transparent: hsla(135deg, 94%, 60%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=yellow],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=yellow] {\n  --md-code-link-accent-bg-color: #45483e;\n  --md-accent-fg-color: hsla(65deg, 92%, 71%, 1);\n  --md-accent-fg-color--transparent: hsla(65deg, 92%, 71%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=amber],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=amber] {\n  --md-code-link-accent-bg-color: #45483e;\n  --md-accent-fg-color: hsla(65deg, 92%, 71%, 1);\n  --md-accent-fg-color--transparent: hsla(65deg, 92%, 71%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=orange] {\n  --md-code-link-accent-bg-color: #473d39;\n  --md-accent-fg-color: hsla(31deg, 100%, 66%, 1);\n  --md-accent-fg-color--transparent: hsla(31deg, 100%, 66%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=deep-orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-orange] {\n  --md-code-link-accent-bg-color: #473d39;\n  --md-accent-fg-color: hsla(31deg, 100%, 66%, 1);\n  --md-accent-fg-color--transparent: hsla(31deg, 100%, 66%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n/* Normal colors */\n:root {\n  --md-heart: #ff5252;\n  --md-heart-big: #ff1744;\n  /* Dark mode colors */\n}\n:root :focus-visible {\n  outline-style: solid;\n}\n:root [data-md-color-scheme=dracula] {\n  --md-heart: hsl(326, 100%, 74%);\n  --md-heart-big: hsl(0, 100%, 67%);\n}\n\n.md-typeset h4 {\n  margin: 2em 0 1em;\n}\n.md-typeset a.source-link {\n  position: relative;\n  top: -0.6rem;\n  float: right;\n  color: var(--md-default-fg-color--lighter);\n  transition: color 125ms;\n}\n.md-typeset a.source-link:hover {\n  color: var(--md-accent-fg-color);\n}\n.md-typeset a.source-link .twemoji {\n  height: 1.2rem;\n}\n.md-typeset a.source-link .twemoji svg {\n  width: 1.2rem;\n  height: 1.2rem;\n}\n.md-typeset div.highlight.md-max-height pre > code {\n  max-height: 15rem;\n}\n\n.twemoji.heart-throb svg, .twemoji.heart-throb-hover svg {\n  position: relative;\n  color: var(--md-heart);\n  animation: pulse 1.5s ease infinite;\n}\n\n@keyframes pulse {\n  0% {\n    transform: scale(1);\n  }\n  40% {\n    color: var(--md-heart-big);\n    transform: scale(1.3);\n  }\n  50% {\n    transform: scale(1.2);\n  }\n  60% {\n    color: var(--md-heart-big);\n    transform: scale(1.3);\n  }\n  100% {\n    transform: scale(1);\n  }\n}\nfooter.sponsorship {\n  text-align: center;\n}\nfooter.sponsorship hr {\n  display: inline-block;\n  width: 1.6rem;\n  margin: 0 0.7rem;\n  vertical-align: middle;\n  border-bottom: 2px solid var(--md-default-fg-color--lighter);\n}\nfooter.sponsorship:hover hr {\n  border-color: var(--md-accent-fg-color);\n}\nfooter.sponsorship:not(:hover) .twemoji.heart-throb-hover svg {\n  color: var(--md-default-fg-color--lighter) !important;\n}\n\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=dracula] .md-icon .light-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=dracula] .md-icon .system-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=dracula] .md-icon .unknown-mode {\n  display: none;\n}\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=default] .md-icon .dark-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=default] .md-icon .system-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=default] .md-icon .unknown-mode {\n  display: none;\n}\nbody:not([data-md-prefers-color-scheme=true]):not([data-md-color-scheme=default]):not([data-md-color-scheme=dracula]) .md-icon .dark-mode,\nbody:not([data-md-prefers-color-scheme=true]):not([data-md-color-scheme=default]):not([data-md-color-scheme=dracula]) .md-icon .light-mode,\nbody:not([data-md-prefers-color-scheme=true]):not([data-md-color-scheme=default]):not([data-md-color-scheme=dracula]) .md-icon .system-mode {\n  display: none;\n}\nbody[data-md-prefers-color-scheme=true] .md-icon .dark-mode,\nbody[data-md-prefers-color-scheme=true] .md-icon .light-mode,\nbody[data-md-prefers-color-scheme=true] .md-icon .unknown-mode {\n  display: none;\n}\n\n.md-header-nav__scheme {\n  z-index: 0;\n}\n\n@media screen and (max-width: 59.9375em) {\n  .md-header-nav__scheme {\n    padding-right: 0;\n  }\n  label[for=__search] {\n    padding-left: 0;\n  }\n}\n[data-md-toggle=search]:checked ~ .md-header .md-header-nav__scheme {\n  display: none;\n}\n\n.md-typeset .admonition, .md-typeset details {\n  border-width: 0;\n  border-left-width: 4px;\n}\n\n/* Style new admonitions with dark or light colors */\n:root > * {\n  --md-admonition-bg-color: transparent;\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-admonition-icon-color: $drac-dark-yellow;\n}\n:root > * {\n  --md-admonition-icon--settings: svg-load(\"@mdi/svg/svg/cog.svg\");\n  --md-admonition-bg-color--settings: rgba(170, 0, 255, 0.1);\n  --md-admonition-icon-color--settings: #aa00ff;\n  --md-admonition-shadow-color--settings: rgba(170, 0, 255, 0.1);\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-admonition-bg-color--settings: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--settings: hsl(326, 100%, 74%);\n  --md-admonition-shadow-color--settings: rgba(255, 122, 198, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--note: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--note: hsl(51, 94%, 73%);\n  --md-admonition-shadow-color--note: rgba(251, 231, 121, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--abstract: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--abstract: hsl(191, 97%, 77%);\n  --md-admonition-shadow-color--abstract: rgba(139, 232, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--info: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--info: hsl(190, 94%, 87%);\n  --md-admonition-shadow-color--info: rgba(191, 243, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--tip: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--tip: hsl(161, 97%, 77%);\n  --md-admonition-shadow-color--tip: rgba(139, 253, 217, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--success: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--success: hsl(135, 94%, 65%);\n  --md-admonition-shadow-color--success: rgba(82, 250, 124, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--question: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--question: hsl(135, 92%, 79%);\n  --md-admonition-shadow-color--question: rgba(152, 251, 177, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--warning: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--warning: hsl(31, 100%, 71%);\n  --md-admonition-shadow-color--warning: rgba(255, 184, 107, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--failure: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--failure: hsl(0, 100%, 59%);\n  --md-admonition-shadow-color--failure: rgba(255, 46, 46, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--danger: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--danger: hsl(0, 100%, 67%);\n  --md-admonition-shadow-color--danger: rgba(255, 87, 87, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--bug: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--bug: hsl(325, 100%, 64%);\n  --md-admonition-shadow-color--bug: rgba(255, 71, 179, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--example: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--example: hsl(265, 89%, 78%);\n  --md-admonition-shadow-color--example: rgba(191, 149, 249, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--quote: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--quote: hsl(225, 8%, 51%);\n  --md-admonition-shadow-color--quote: rgba(120, 125, 140, 0.1);\n}\n:root > * {\n  --md-admonition-icon--new: svg-load(\"@mdi/svg/svg/alert-decagram.svg\");\n  --md-admonition-bg-color--new: rgba(255, 214, 0, 0.1);\n  --md-admonition-icon-color--new: #ffd600;\n  --md-admonition-shadow-color--new: rgba(255, 214, 0, 0.1);\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-admonition-bg-color--new: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--new: hsl(65, 92%, 76%);\n  --md-admonition-shadow-color--new: rgba(241, 250, 137, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--note: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--note: hsl(51, 94%, 73%);\n  --md-admonition-shadow-color--note: rgba(251, 231, 121, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--abstract: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--abstract: hsl(191, 97%, 77%);\n  --md-admonition-shadow-color--abstract: rgba(139, 232, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--info: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--info: hsl(190, 94%, 87%);\n  --md-admonition-shadow-color--info: rgba(191, 243, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--tip: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--tip: hsl(161, 97%, 77%);\n  --md-admonition-shadow-color--tip: rgba(139, 253, 217, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--success: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--success: hsl(135, 94%, 65%);\n  --md-admonition-shadow-color--success: rgba(82, 250, 124, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--question: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--question: hsl(135, 92%, 79%);\n  --md-admonition-shadow-color--question: rgba(152, 251, 177, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--warning: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--warning: hsl(31, 100%, 71%);\n  --md-admonition-shadow-color--warning: rgba(255, 184, 107, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--failure: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--failure: hsl(0, 100%, 59%);\n  --md-admonition-shadow-color--failure: rgba(255, 46, 46, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--danger: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--danger: hsl(0, 100%, 67%);\n  --md-admonition-shadow-color--danger: rgba(255, 87, 87, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--bug: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--bug: hsl(325, 100%, 64%);\n  --md-admonition-shadow-color--bug: rgba(255, 71, 179, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--example: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--example: hsl(265, 89%, 78%);\n  --md-admonition-shadow-color--example: rgba(191, 149, 249, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--quote: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--quote: hsl(225, 8%, 51%);\n  --md-admonition-shadow-color--quote: rgba(120, 125, 140, 0.1);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset .admonition, [data-md-color-scheme=dracula] .md-typeset details {\n  border-color: var(--md-admonition-icon-color--note);\n  box-shadow: var(--md-shadow-z2);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition:focus-within, [data-md-color-scheme=dracula] .md-typeset details:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details > summary {\n  background-color: var(--md-admonition-bg-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details > summary::before {\n  background-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details > summary::after {\n  color: var(--md-admonition-icon-color--note);\n}\n\n/* Style existing admonitions with dark mode colors */\n[data-md-color-scheme=dracula] .md-typeset .admonition.note, [data-md-color-scheme=dracula] .md-typeset details.note {\n  border-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note:focus-within, [data-md-color-scheme=dracula] .md-typeset details.note:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.note > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.note > summary {\n  background-color: var(--md-admonition-bg-color--note);\n  border-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.note > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.note > summary::before {\n  background-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.note > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.note > summary::after {\n  color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract, [data-md-color-scheme=dracula] .md-typeset details.abstract {\n  border-color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract:focus-within, [data-md-color-scheme=dracula] .md-typeset details.abstract:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.abstract > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.abstract > summary {\n  background-color: var(--md-admonition-bg-color--abstract);\n  border-color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.abstract > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.abstract > summary::before {\n  background-color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.abstract > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.abstract > summary::after {\n  color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info, [data-md-color-scheme=dracula] .md-typeset details.info {\n  border-color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info:focus-within, [data-md-color-scheme=dracula] .md-typeset details.info:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.info > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.info > summary {\n  background-color: var(--md-admonition-bg-color--info);\n  border-color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.info > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.info > summary::before {\n  background-color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.info > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.info > summary::after {\n  color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip, [data-md-color-scheme=dracula] .md-typeset details.tip {\n  border-color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip:focus-within, [data-md-color-scheme=dracula] .md-typeset details.tip:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.tip > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.tip > summary {\n  background-color: var(--md-admonition-bg-color--tip);\n  border-color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.tip > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.tip > summary::before {\n  background-color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.tip > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.tip > summary::after {\n  color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success, [data-md-color-scheme=dracula] .md-typeset details.success {\n  border-color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success:focus-within, [data-md-color-scheme=dracula] .md-typeset details.success:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.success > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.success > summary {\n  background-color: var(--md-admonition-bg-color--success);\n  border-color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.success > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.success > summary::before {\n  background-color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.success > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.success > summary::after {\n  color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question, [data-md-color-scheme=dracula] .md-typeset details.question {\n  border-color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question:focus-within, [data-md-color-scheme=dracula] .md-typeset details.question:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.question > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.question > summary {\n  background-color: var(--md-admonition-bg-color--question);\n  border-color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.question > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.question > summary::before {\n  background-color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.question > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.question > summary::after {\n  color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning, [data-md-color-scheme=dracula] .md-typeset details.warning {\n  border-color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning:focus-within, [data-md-color-scheme=dracula] .md-typeset details.warning:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.warning > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.warning > summary {\n  background-color: var(--md-admonition-bg-color--warning);\n  border-color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.warning > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.warning > summary::before {\n  background-color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.warning > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.warning > summary::after {\n  color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure, [data-md-color-scheme=dracula] .md-typeset details.failure {\n  border-color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure:focus-within, [data-md-color-scheme=dracula] .md-typeset details.failure:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.failure > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.failure > summary {\n  background-color: var(--md-admonition-bg-color--failure);\n  border-color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.failure > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.failure > summary::before {\n  background-color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.failure > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.failure > summary::after {\n  color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger, [data-md-color-scheme=dracula] .md-typeset details.danger {\n  border-color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger:focus-within, [data-md-color-scheme=dracula] .md-typeset details.danger:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.danger > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.danger > summary {\n  background-color: var(--md-admonition-bg-color--danger);\n  border-color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.danger > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.danger > summary::before {\n  background-color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.danger > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.danger > summary::after {\n  color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug, [data-md-color-scheme=dracula] .md-typeset details.bug {\n  border-color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug:focus-within, [data-md-color-scheme=dracula] .md-typeset details.bug:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.bug > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.bug > summary {\n  background-color: var(--md-admonition-bg-color--bug);\n  border-color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.bug > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.bug > summary::before {\n  background-color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.bug > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.bug > summary::after {\n  color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example, [data-md-color-scheme=dracula] .md-typeset details.example {\n  border-color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example:focus-within, [data-md-color-scheme=dracula] .md-typeset details.example:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.example > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.example > summary {\n  background-color: var(--md-admonition-bg-color--example);\n  border-color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.example > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.example > summary::before {\n  background-color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.example > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.example > summary::after {\n  color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote, [data-md-color-scheme=dracula] .md-typeset details.quote {\n  border-color: var(--md-admonition-icon-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote:focus-within, [data-md-color-scheme=dracula] .md-typeset details.quote:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.quote > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.quote > summary {\n  background-color: var(--md-admonition-bg-color--quote);\n  border-color: var(--md-admonition-icon-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.quote > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.quote > summary::before {\n  background-color: var(--md-admonition-icon-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.quote > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.quote > summary::after {\n  color: var(--md-admonition-icon-color--quote);\n}\n\n.md-typeset .admonition.settings, .md-typeset details.settings, .md-typeset .admonition.config, .md-typeset details.config {\n  border-color: var(--md-admonition-icon-color--settings);\n}\n.md-typeset .admonition.settings:focus-within, .md-typeset details.settings:focus-within, .md-typeset .admonition.config:focus-within, .md-typeset details.config:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--settings);\n}\n.md-typeset .admonition.settings > .admonition-title, .md-typeset details.settings > .admonition-title, .md-typeset details.settings > summary, .md-typeset .admonition.config > .admonition-title, .md-typeset details.config > .admonition-title, .md-typeset details.config > summary {\n  background-color: var(--md-admonition-bg-color--settings);\n  border-color: var(--md-admonition-icon-color--settings);\n}\n.md-typeset .admonition.settings > .admonition-title::before, .md-typeset details.settings > .admonition-title::before, .md-typeset details.settings > summary::before, .md-typeset .admonition.config > .admonition-title::before, .md-typeset details.config > .admonition-title::before, .md-typeset details.config > summary::before {\n  width: 1rem;\n  height: 1rem;\n  background-color: var(--md-admonition-icon-color--settings);\n  background-size: 1rem;\n  mask-image: var(--md-admonition-icon--settings);\n  content: \" \";\n}\n.md-typeset .admonition.settings > .admonition-title::after, .md-typeset details.settings > .admonition-title::after, .md-typeset details.settings > summary::after, .md-typeset .admonition.config > .admonition-title::after, .md-typeset details.config > .admonition-title::after, .md-typeset details.config > summary::after {\n  color: var(--md-admonition-icon-color--settings);\n}\n\n.md-typeset .admonition.new, .md-typeset details.new {\n  border-color: var(--md-admonition-icon-color--new);\n}\n.md-typeset .admonition.new:focus-within, .md-typeset details.new:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--new);\n}\n.md-typeset .admonition.new > .admonition-title, .md-typeset details.new > .admonition-title, .md-typeset details.new > summary {\n  background-color: var(--md-admonition-bg-color--new);\n  border-color: var(--md-admonition-icon-color--new);\n}\n.md-typeset .admonition.new > .admonition-title::before, .md-typeset details.new > .admonition-title::before, .md-typeset details.new > summary::before {\n  width: 1rem;\n  height: 1rem;\n  background-color: var(--md-admonition-icon-color--new);\n  background-size: 1rem;\n  mask-image: var(--md-admonition-icon--new);\n  content: \" \";\n}\n.md-typeset .admonition.new > .admonition-title::after, .md-typeset details.new > .admonition-title::after, .md-typeset details.new > summary::after {\n  color: var(--md-admonition-icon-color--new);\n}\n\nmjx-container[display=true] {\n  font-size: 120% !important;\n}\n\nmjx-container:not([display]) {\n  font-size: 100% !important;\n}\n\n[data-md-color-scheme=slate],\n[data-md-color-scheme=dracula] {\n  /* stylelint-disable selector-class-pattern */\n  /* stylelint-enable selector-class-pattern */\n}\n[data-md-color-scheme=slate] .CtxtMenu_InfoSignature input,\n[data-md-color-scheme=slate] .CtxtMenu_InfoContent pre,\n[data-md-color-scheme=dracula] .CtxtMenu_InfoSignature input,\n[data-md-color-scheme=dracula] .CtxtMenu_InfoContent pre {\n  color: rgb(0, 0, 0);\n}\n[data-md-color-scheme=slate] .CtxtMenu_Info,\n[data-md-color-scheme=slate] .CtxtMenu_Menu,\n[data-md-color-scheme=dracula] .CtxtMenu_Info,\n[data-md-color-scheme=dracula] .CtxtMenu_Menu {\n  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.5);\n}\n\n.md-typeset .arithmatex {\n  overflow-x: auto !important;\n  overflow-y: hidden !important;\n}\n\n.katex-display .katex-html {\n  display: flex !important;\n  flex-direction: row;\n  flex-wrap: nowrap;\n  align-items: baseline;\n  justify-content: space-between;\n}\n.katex-display .katex-html .base {\n  display: inline !important;\n}\n.katex-display .katex-html .tag {\n  position: relative !important;\n  display: inline !important;\n  margin-left: var(--margin-small);\n}\n\n/* Don't use box shadows */\n.md-typeset del.critic,\n.md-typeset ins.critic,\n.md-typeset mark.critic {\n  padding: 0 0.25em;\n  color: unset;\n  box-shadow: none;\n}\n.md-typeset .critic.break {\n  margin: 0;\n}\n\n/* Inherit admonition style */\n.md-typeset details {\n  overflow: hidden;\n}\n.md-typeset details > summary:focus {\n  outline-style: none;\n}\n\n.highlight .kc {\n  color: var(--md-code-hl-constant-color);\n}\n.highlight .nc,\n.highlight .ne {\n  color: var(--md-code-hl-class-color);\n}\n.highlight .mb {\n  color: var(--md-code-hl-number-color);\n}\n.highlight .nb,\n.highlight .bp {\n  color: var(--md-code-hl-builtin-color);\n}\n.highlight .nn {\n  color: var(--md-code-hl-namespace-color);\n}\n.highlight .na,\n.highlight .nd,\n.highlight .ni {\n  color: var(--md-code-hl-entity-color);\n}\n.highlight .nl,\n.highlight .nt {\n  color: var(--md-code-hl-tag-color);\n}\n\n.md-typeset {\n  /* Allow code to look like code everywhere despite Material's current preference */\n  /* Code that is also a link */\n  /* Don't always like code breaking in table cells */\n  /* Special line number coloring for tables */\n}\n.md-typeset *:not(pre) > code {\n  margin: 0;\n  padding: 0 0.2941176471em;\n  color: var(--md-code-fg-color);\n  background-color: var(--md-code-inline-bg-color);\n  border-radius: 0.1rem;\n  box-shadow: none;\n}\n.md-typeset a > code {\n  color: inherit !important;\n  background-color: var(--md-code-link-bg-color) !important;\n  transition: color 125ms;\n  transition: background-color 125ms;\n  /* If we are linking highlighted, inline code, force it to just look like a code link */\n}\n.md-typeset a > code * {\n  color: var(--md-typeset-a-color) !important;\n}\n.md-typeset a > code:hover {\n  background-color: var(--md-code-link-accent-bg-color) !important;\n}\n.md-typeset a > code:hover * {\n  color: var(--md-accent-fg-color) !important;\n}\n.md-typeset pre > code {\n  outline: none;\n}\n.md-typeset td code {\n  word-break: normal;\n}\n.md-typeset .highlight {\n  /* Needed for tab preserving mode */\n  tab-size: 8;\n  /* `pymdownx-inline` mode */\n}\n.md-typeset .highlight + .result {\n  border-width: 0.1rem;\n}\n.md-typeset .highlight [data-linenos] {\n  /* Special line mode coloring */\n}\n.md-typeset .highlight [data-linenos].special::before {\n  background-color: var(--md-code-special-bg-color);\n}\n.md-typeset .highlighttable .linenodiv .special {\n  margin-right: -0.5882352941em;\n  margin-left: -1.1764705882em;\n  padding-right: 0.5882352941em;\n  padding-left: 1.1764705882em;\n  background-color: var(--md-code-special-bg-color);\n}\n.md-typeset .highlight span.filename {\n  position: relative;\n  display: block;\n  margin-top: 1em;\n  padding: 0.5em 1.1764705882em 0.5em 2.9411764706em;\n  font-weight: 700;\n  font-size: 0.68rem;\n  background-color: var(--md-code-title-bg-color);\n  border-top-left-radius: 0.1rem;\n  border-top-right-radius: 0.1rem;\n}\n.md-typeset .highlight span.filename + pre {\n  margin-top: 0;\n}\n.md-typeset .highlight span.filename + pre code {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.md-typeset .highlight span.filename::before {\n  position: absolute;\n  left: 0.8823529412em;\n  width: 1.4705882353em;\n  height: 1.4705882353em;\n  background-color: var(--md-default-fg-color);\n  mask-image: svg-load(\"@mdi/svg/svg/console.svg\");\n  mask-repeat: no-repeat;\n  mask-size: contain;\n  content: \"\";\n}\n.md-typeset .collapse-code {\n  position: relative;\n  margin-top: 1em;\n  margin-bottom: 1em;\n}\n.md-typeset .collapse-code pre {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.md-typeset .collapse-code input {\n  display: none;\n}\n.md-typeset .collapse-code input ~ .code-footer {\n  width: 100%;\n  margin: 0;\n  padding: 0.25em 0.5em 0.25em 0em;\n}\n.md-typeset .collapse-code input ~ .code-footer label {\n  position: relative;\n  margin: 0.05em;\n  padding: 0.15em 0.8em;\n  color: var(--md-primary-bg-color);\n  font-size: 90%;\n  background-color: var(--md-primary-fg-color);\n  mask-repeat: no-repeat;\n  mask-size: contain;\n  border-radius: 0.1rem;\n  cursor: pointer;\n  content: \"\";\n}\n.md-typeset .collapse-code input ~ .code-footer label:hover {\n  background-color: var(--md-accent-fg-color);\n}\n.md-typeset .collapse-code input ~ .code-footer label::before {\n  position: absolute;\n  top: 0.15em;\n  left: 0.15em;\n  display: block;\n  box-sizing: border-box;\n  width: 1.25em;\n  height: 1.25em;\n  background-color: var(--md-primary-bg-color);\n  background-size: 1.25em;\n  content: \"\";\n}\n.md-typeset .collapse-code input ~ .code-footer label.expand {\n  display: none;\n}\n.md-typeset .collapse-code input ~ .code-footer label.expand::before {\n  mask-image: svg-load(\"@mdi/svg/svg/arrow-expand.svg\");\n}\n.md-typeset .collapse-code input ~ .code-footer label.collapse::before {\n  mask-image: svg-load(\"@mdi/svg/svg/arrow-collapse.svg\");\n}\n.md-typeset .collapse-code input:checked ~ .code-footer label.expand {\n  display: inline;\n}\n.md-typeset .collapse-code input:checked ~ .code-footer label.collapse {\n  display: none;\n}\n.md-typeset .collapse-code input:checked + div.highlight code {\n  max-height: 9.375em;\n  overflow: hidden;\n}\n.md-typeset .collapse-code input:checked ~ .code-footer {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  padding: 2em 0.5em 0.5em 0.8rem;\n  background-image: linear-gradient(to bottom, transparent, var(--md-default-bg-color) 80% 100%);\n}\n@media screen and (max-width: 44.9375em) {\n  .md-typeset > diagram-div {\n    margin-right: -0.8rem;\n    margin-left: -0.8rem;\n  }\n  .md-typeset > .collapse-code {\n    margin-right: -0.8rem;\n    margin-left: -0.8rem;\n  }\n  .md-typeset > .collapse-code label.collapse {\n    left: 0.8rem;\n  }\n}\n\n.md-typeset .keys .key-power::before {\n  padding-right: 0.4em;\n  content: \"⏻\";\n}\n.md-typeset .keys .key-fingerprint::before {\n  padding-right: 0.4em;\n  content: \"☝\";\n}\n\n:root > * {\n  --magiclink-email-icon: svg-load(\"@mdi/svg/svg/mail.svg\");\n  --magiclink-github-icon: svg-load(\"@mdi/svg/svg/github.svg\");\n  --magiclink-bitbucket-icon: svg-load(\"@mdi/svg/svg/bitbucket.svg\");\n  --magiclink-gitlab-icon: svg-load(\"@mdi/svg/svg/gitlab.svg\");\n  --magiclink-commit-icon: svg-load(\"@primer/octicons/build/svg/git-commit-24.svg\");\n  --magiclink-compare-icon: svg-load(\"@primer/octicons/build/svg/file-diff-24.svg\");\n  --magiclink-pull-icon: svg-load(\"@primer/octicons/build/svg/git-pull-request-24.svg\");\n  --magiclink-issue-icon: svg-load(\"@primer/octicons/build/svg/issue-opened-24.svg\");\n  --magiclink-discussion-icon: svg-load(\"@primer/octicons/build/svg/comment-discussion-24.svg\");\n}\n\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-email-icon);\n}\n.md-typeset .magiclink-repository:not(.magiclink-ignore),\n.md-typeset .magiclink-compare:not(.magiclink-ignore),\n.md-typeset .magiclink-commit:not(.magiclink-ignore),\n.md-typeset .magiclink-pull:not(.magiclink-ignore),\n.md-typeset .magiclink-issue:not(.magiclink-ignore),\n.md-typeset .magiclink-discussion:not(.magiclink-ignore),\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore) {\n  position: relative;\n  padding-left: 1.375em;\n}\n.md-typeset .magiclink-repository:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-compare:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-commit:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-pull:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-issue:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before,\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  box-sizing: border-box;\n  width: 1.25em;\n  height: 1.25em;\n  background-color: var(--md-typeset-a-color);\n  background-size: 1.25em;\n  transition: background-color 125ms;\n  mask-repeat: no-repeat;\n  mask-size: contain;\n  content: \"\";\n}\n.md-typeset .magiclink-repository:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-compare:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-commit:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-pull:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-issue:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-discussion:not(.magiclink-ignore):hover::before,\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore):hover::before {\n  background-color: var(--md-accent-fg-color);\n}\n\n.md-typeset .magiclink-commit:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-commit-icon);\n}\n\n.md-typeset .magiclink-compare:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-compare-icon);\n}\n\n.md-typeset .magiclink-pull:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-pull-icon);\n}\n\n.md-typeset .magiclink-issue:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-issue-icon);\n}\n\n.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-discussion-icon);\n}\n\n.md-typeset .magiclink-repository.magiclink-github:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-github-icon);\n}\n\n.md-typeset .magiclink-repository.magiclink-gitlab:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-gitlab-icon);\n}\n\n.md-typeset .magiclink-repository.magiclink-bitbucket:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-bitbucket-icon);\n}\n\n/* Shadow boxes sometimes give issues, so just pad. */\n.md-typeset mark:not(.critic) {\n  box-shadow: none;\n}\n\n.md-typeset {\n  /* Progress Bars */\n  /* Stripe animation */\n}\n.md-typeset .progress-label {\n  position: absolute;\n  width: 100%;\n  margin: 0;\n  color: var(--md-text-color);\n  font-weight: 700;\n  line-height: 1.4rem;\n  white-space: nowrap;\n  text-align: center;\n  text-shadow: -0.0625em -0.0625em 0.375em var(--md-default-bg-color--light), 0.0625em -0.0625em 0.375em var(--md-default-bg-color--light), -0.0625em 0.0625em 0.375em var(--md-default-bg-color--light), 0.0625em 0.0625em 0.375em var(--md-default-bg-color--light);\n}\n.md-typeset .progress-bar {\n  float: left;\n  height: 1.2rem;\n  background-color: #2979ff;\n}\n.md-typeset .candystripe-animate .progress-bar {\n  animation: animate-stripes 3s linear infinite;\n}\n.md-typeset .progress {\n  position: relative;\n  display: block;\n  width: 100%;\n  height: 1.2rem;\n  margin: 0.5rem 0;\n  background-color: var(--md-default-fg-color--lightest);\n}\n.md-typeset .progress.thin {\n  height: 0.4rem;\n  margin-top: 0.9rem;\n}\n.md-typeset .progress.thin .progress-label {\n  margin-top: -0.4rem;\n}\n.md-typeset .progress.thin .progress-bar {\n  height: 0.4rem;\n}\n.md-typeset .progress.candystripe .progress-bar {\n  background-image: linear-gradient(135deg, var(--md-progress-stripe) 27%, transparent 27%, transparent 52%, var(--md-progress-stripe) 52%, var(--md-progress-stripe) 77%, transparent 77%, transparent);\n  background-size: 2rem 2rem;\n}\n.md-typeset .progress-100plus .progress-bar {\n  background-color: var(--md-progress-100);\n}\n.md-typeset .progress-80plus .progress-bar {\n  background-color: var(--md-progress-80);\n}\n.md-typeset .progress-60plus .progress-bar {\n  background-color: var(--md-progress-60);\n}\n.md-typeset .progress-40plus .progress-bar {\n  background-color: var(--md-progress-40);\n}\n.md-typeset .progress-20plus .progress-bar {\n  background-color: var(--md-progress-20);\n}\n.md-typeset .progress-0plus .progress-bar {\n  background-color: var(--md-progress-0);\n}\n@keyframes animate-stripes {\n  0% {\n    background-position: 0 0;\n  }\n  100% {\n    background-position: 6rem 0;\n  }\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset .tabbed-set > .tabbed-labels {\n  box-shadow: 0 -0.05rem var(--md-default-fg-color--lighter) inset;\n}\n\n/* Style code blocks to fill full tab,\n   but otherwise, pad content. */\n.md-typeset .tabbed-alternate.tabbed-set .tabbed-control {\n  width: 2rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set .tabbed-control[hidden] {\n  width: 1.2rem;\n  opacity: 0;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block {\n  padding: 0 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > pre:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilite:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilitetable:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlight:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlighttable:only-child {\n  margin-right: -1.2rem;\n  margin-left: -1.2rem;\n  padding-right: 0.6rem;\n  padding-left: 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > pre:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilite:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilitetable:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlight:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlighttable:only-child span.filename {\n  margin-top: 0;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .collapse-code:only-child {\n  margin-top: 0;\n  margin-right: -1.2rem;\n  margin-left: -1.2rem;\n  padding-right: 0.6rem;\n  padding-left: 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .collapse-code:only-child > .code-footer {\n  left: 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > diagram-div:only-child {\n  margin-right: -1.2rem;\n  margin-left: -1.2rem;\n  padding-right: 0.6rem;\n  padding-left: 0.6rem;\n}\n\n.js .md-typeset .tabbed-labels::before {\n  background-color: var(--md-accent-fg-color);\n}\n\n/* Ignore mobile overflow styling that extends the tab bar */\n@media screen and (max-width: 44.9375em) {\n  [dir=ltr] .md-content__inner > .tabbed-set .tabbed-labels {\n    padding-left: 0;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels {\n    max-width: 100%;\n    margin: 0;\n    padding-inline-start: 0;\n    scroll-padding-inline-start: 0;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels::after {\n    padding-inline-end: 0;\n    content: none;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels ~ .tabbed-control--prev {\n    margin-inline-start: 0;\n    padding-inline-start: 0;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels ~ .tabbed-control--next {\n    margin-inline-end: 0;\n    padding-inline-end: 0;\n  }\n}\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) {\n  box-shadow: var(--md-shadow-z2);\n}\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) tr:hover {\n  background-color: rgba(0, 0, 0, 0.08);\n}\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) th {\n  color: var(--md-text-color);\n  background-color: var(--md-default-bg-color--ultra-dark);\n  border-bottom: 0.05rem solid var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) td {\n  border-top: 0.05rem solid var(--md-default-fg-color--lighter);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset .task-list-control .task-list-indicator::before {\n  background-color: var(--md-default-fg-color--lighter);\n}\n[data-md-color-scheme=dracula] .md-typeset .task-list-control [type=checkbox]:checked + .task-list-indicator::before {\n  background-color: hsl(135, 94%, 65%);\n}\n\n.md-typeset .headerlink {\n  width: 1em;\n  height: 1em;\n  vertical-align: middle;\n  background-color: var(--md-default-fg-color--lighter);\n  background-size: 1em;\n  mask-size: 1em;\n  mask-repeat: no-repeat;\n  visibility: visible;\n  mask-image: svg-load(\"@mdi/svg/svg/link.svg\");\n}\n.md-typeset .headerlink:hover,\n.md-typeset [id]:target .headerlink {\n  background-color: var(--md-accent-fg-color);\n}\n\n/* Special handling of Mermaid content. */\ndiagram-div {\n  overflow: auto;\n}\n\nhtml {\n  background-color: transparent;\n}\n\n[data-md-component=announce] .twemoji {\n  color: var(--md-primary-fg-color);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] {\n  --md-text-color: var(--md-default-fg-color);\n  background-color: var(--md-default-bg-color);\n  --md-footer-bg-color: transparent;\n  --md-footer-bg-color--dark: var(--md-default-bg-color--darkest);\n  --md-header-fg-color: var(--md-text-color);\n  --md-header-bg-color: var(--md-default-bg-color--darkest);\n}\n[data-md-color-scheme=dracula] .md-header {\n  color: var(--md-text-color);\n  background-color: var(--md-header-bg-color);\n  border-bottom: 0.05rem solid var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-header[data-md-state=shadow] {\n  box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.15), 0 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2);\n}\n[data-md-color-scheme=dracula] .md-top {\n  background-color: var(--md-default-bg-color--dark);\n}\n[data-md-color-scheme=dracula] .md-top:hover {\n  background-color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-tabs {\n  color: var(--md-text-color);\n  background-color: var(--md-primary-fg-color--transparent);\n}\n[data-md-color-scheme=dracula] .md-tabs__link--active {\n  color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-tabs__link:hover {\n  color: var(--md-accent-fg-color);\n}\n[data-md-color-scheme=dracula] .md-hero {\n  color: var(--md-text-color);\n  background-color: var(--md-primary-fg-color--transparent);\n}\n[data-md-color-scheme=dracula] .md-nav__source {\n  color: var(--md-text-color);\n}\n[data-md-color-scheme=dracula] .md-nav__link[data-md-state=blur] {\n  color: var(--md-default-fg-color--light);\n}\n[data-md-color-scheme=dracula] .md-nav__item .md-nav__link--active {\n  color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-nav__link:focus, [data-md-color-scheme=dracula] .md-nav__link:hover {\n  color: var(--md-accent-fg-color);\n}\n@media screen and (max-width: 76.1875em) {\n  [data-md-color-scheme=dracula] .md-nav--primary .md-nav__item--active > .md-nav__link:not(:hover) {\n    color: var(--md-primary-fg-color);\n  }\n  [data-md-color-scheme=dracula] .md-nav--primary .md-nav__title {\n    color: var(--md-text-color);\n    background-color: var(--md-header-bg-color);\n    border-bottom: 0.05rem solid var(--md-primary-fg-color);\n  }\n}\n@media screen and (max-width: 59.9375em) {\n  [data-md-color-scheme=dracula] .md-nav__source {\n    color: var(--md-text-color);\n    background-color: var(--md-primary-fg-color--transparent);\n  }\n  [data-md-color-scheme=dracula] .md-nav .md-nav__title {\n    color: var(--md-text-color);\n    background-color: var(--md-header-bg-color);\n    border-bottom: 0.05rem solid var(--md-primary-fg-color);\n  }\n}\n[data-md-color-scheme=dracula] .md-search__input {\n  color: var(--md-text-color);\n  background-color: var(--md-accent-bg-color--light);\n}\n[data-md-color-scheme=dracula] .md-search__input:hover {\n  background-color: var(--md-default-bg-color--light);\n}\n[data-md-color-scheme=dracula] .md-search__input ~ .md-search__icon {\n  color: var(--md-text-color);\n}\n[data-md-color-scheme=dracula] .md-search__input::placeholder {\n  color: var(--md-default-fg-color--light);\n}\n[data-md-color-scheme=dracula] [data-md-toggle=search]:checked ~ .md-header .md-search__input {\n  background-color: transparent;\n}\n[data-md-color-scheme=dracula] .md-search__suggest {\n  color: var(--md-default-autocomplete-fg-color);\n}\n[data-md-color-scheme=dracula] .md-search__overlay, [data-md-color-scheme=dracula] .md-overlay {\n  background-color: var(--md-default-bg-color--light);\n}\n[data-md-color-scheme=dracula] .md-footer-nav__direction {\n  color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-footer-meta {\n  border-top: 0.05rem solid var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] [data-md-component=announce] {\n  background-color: var(--md-default-bg-color--ultra-dark);\n}\n\n/* Don't force capitalization of `H5` elements. */\n.md-typeset h5 {\n  color: var(--md-text-color);\n  text-transform: none;\n}\n\n.md-typeset__scrollwrap,\n.md-sidebar__scrollwrap,\n.md-search__scrollwrap,\n.md-typeset pre > code,\n.md-typeset div.mermaid,\n.md-typeset div.diagram,\n.md-typeset mermaid-div,\n.md-typeset diagram-div,\n.md-typeset pre.arithmatex,\n.md-typeset div.arithmatex {\n  scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n  scrollbar-width: thin;\n}\n.md-typeset__scrollwrap:hover,\n.md-sidebar__scrollwrap:hover,\n.md-search__scrollwrap:hover,\n.md-typeset pre > code:hover,\n.md-typeset div.mermaid:hover,\n.md-typeset div.diagram:hover,\n.md-typeset mermaid-div:hover,\n.md-typeset diagram-div:hover,\n.md-typeset pre.arithmatex:hover,\n.md-typeset div.arithmatex:hover {\n  scrollbar-color: var(--md-accent-fg-color) transparent;\n}\n.md-typeset__scrollwrap::-webkit-scrollbar,\n.md-sidebar__scrollwrap::-webkit-scrollbar,\n.md-search__scrollwrap::-webkit-scrollbar,\n.md-typeset pre > code::-webkit-scrollbar,\n.md-typeset div.mermaid::-webkit-scrollbar,\n.md-typeset div.diagram::-webkit-scrollbar,\n.md-typeset mermaid-div::-webkit-scrollbar,\n.md-typeset diagram-div::-webkit-scrollbar,\n.md-typeset pre.arithmatex::-webkit-scrollbar,\n.md-typeset div.arithmatex::-webkit-scrollbar {\n  width: 0.2rem;\n  height: 0.2rem;\n}\n.md-typeset__scrollwrap::-webkit-scrollbar-corner,\n.md-sidebar__scrollwrap::-webkit-scrollbar-corner,\n.md-search__scrollwrap::-webkit-scrollbar-corner,\n.md-typeset pre > code::-webkit-scrollbar-corner,\n.md-typeset div.mermaid::-webkit-scrollbar-corner,\n.md-typeset div.diagram::-webkit-scrollbar-corner,\n.md-typeset mermaid-div::-webkit-scrollbar-corner,\n.md-typeset diagram-div::-webkit-scrollbar-corner,\n.md-typeset pre.arithmatex::-webkit-scrollbar-corner,\n.md-typeset div.arithmatex::-webkit-scrollbar-corner {\n  background-color: transparent;\n}\n.md-typeset__scrollwrap::-webkit-scrollbar-thumb,\n.md-sidebar__scrollwrap::-webkit-scrollbar-thumb,\n.md-search__scrollwrap::-webkit-scrollbar-thumb,\n.md-typeset pre > code::-webkit-scrollbar-thumb,\n.md-typeset div.mermaid::-webkit-scrollbar-thumb,\n.md-typeset div.diagram::-webkit-scrollbar-thumb,\n.md-typeset mermaid-div::-webkit-scrollbar-thumb,\n.md-typeset diagram-div::-webkit-scrollbar-thumb,\n.md-typeset pre.arithmatex::-webkit-scrollbar-thumb,\n.md-typeset div.arithmatex::-webkit-scrollbar-thumb {\n  background-color: var(--md-default-fg-color--lighter);\n}\n.md-typeset__scrollwrap::-webkit-scrollbar-thumb:hover,\n.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover,\n.md-search__scrollwrap::-webkit-scrollbar-thumb:hover,\n.md-typeset pre > code::-webkit-scrollbar-thumb:hover,\n.md-typeset div.mermaid::-webkit-scrollbar-thumb:hover,\n.md-typeset div.diagram::-webkit-scrollbar-thumb:hover,\n.md-typeset mermaid-div::-webkit-scrollbar-thumb:hover,\n.md-typeset diagram-div::-webkit-scrollbar-thumb:hover,\n.md-typeset pre.arithmatex::-webkit-scrollbar-thumb:hover,\n.md-typeset div.arithmatex::-webkit-scrollbar-thumb:hover {\n  background-color: var(--md-accent-fg-color);\n}","/* Normal colors */\n:root {\n  --md-heart: #{$clr-red-a200};\n  --md-heart-big: #{$clr-red-a400};\n\n  :focus-visible {\n    outline-style: solid;\n  }\n\n  /* Dark mode colors */\n  [data-md-color-scheme=\"dracula\"] {\n    --md-heart: #{$drac-pink};\n    --md-heart-big: #{$drac-red};\n  }\n}\n\n.md-typeset {\n\n    h4 {\n      margin: 2.0em 0 1em;\n    }\n\n    a.source-link {\n        position: relative;\n        top: px2rem(-12px);\n        float: right;\n        color: var(--md-default-fg-color--lighter);\n        transition: color 125ms;\n\n        &:hover {\n          color: var(--md-accent-fg-color);\n        }\n\n        .twemoji {\n            height: px2rem(24px);\n\n            svg {\n                width: px2rem(24px);\n                height: px2rem(24px);\n            }\n        }\n    }\n\n    div.highlight.md-max-height pre > code {\n      max-height: px2rem(300px);\n    }\n}\n\n.twemoji {\n  &.heart-throb, &.heart-throb-hover {\n    svg {\n      position: relative;\n      color: var(--md-heart);\n      animation: pulse 1.5s ease infinite;\n    }\n  }\n}\n\n@keyframes pulse {\n  0% { transform: scale(1); }\n  40% { color: var(--md-heart-big); transform: scale(1.3); }\n  50% { transform: scale(1.2); }\n  60% { color: var(--md-heart-big); transform: scale(1.3); }\n  100% { transform: scale(1); }\n}\n\nfooter.sponsorship {\n  text-align: center;\n\n  hr {\n    display: inline-block;\n    width: px2rem(32px);\n    margin: 0 px2rem(14px);\n    vertical-align: middle;\n    border-bottom: 2px solid var(--md-default-fg-color--lighter);\n  }\n\n  &:hover {\n    hr {\n        border-color: var(--md-accent-fg-color);\n    }\n  }\n\n  &:not(:hover) {\n    .twemoji.heart-throb-hover svg{\n        color: var(--md-default-fg-color--lighter) !important;\n    }\n  }\n}\n\n// Scheme toggle\nbody {\n  &:not([data-md-prefers-color-scheme=\"true\"])[data-md-color-scheme=\"dracula\"] .md-icon {\n    .light-mode,\n    .system-mode,\n    .unknown-mode {\n      display:  none;\n    }\n  }\n\n\n  &:not([data-md-prefers-color-scheme=\"true\"])[data-md-color-scheme=\"default\"] .md-icon {\n    .dark-mode,\n    .system-mode,\n    .unknown-mode {\n      display:  none;\n    }\n  }\n\n  &:not([data-md-prefers-color-scheme=\"true\"]):not([data-md-color-scheme=\"default\"]):not([data-md-color-scheme=\"dracula\"]) .md-icon {\n    .dark-mode,\n    .light-mode,\n    .system-mode {\n      display:  none;\n    }\n  }\n\n  &[data-md-prefers-color-scheme=\"true\"] .md-icon {\n    .dark-mode,\n    .light-mode,\n    .unknown-mode {\n      display: none;\n    }\n  }\n}\n\n.md-header-nav__scheme {\n  z-index: 0;\n}\n\n@include break-to-device(tablet portrait) {\n  .md-header-nav__scheme {\n    padding-right: 0;\n  }\n\n  label[for=\"__search\"] {\n    padding-left: 0;\n  }\n}\n\n[data-md-toggle=search]:checked~.md-header .md-header-nav__scheme {\n  display: none;\n}\n",".md-typeset .admonition {\n  border-width: 0;\n  border-left-width: 4px;\n}\n\n$new-admonitions: (\n  settings config: $drac-pink $clr-purple-a700 \"@mdi/svg/svg/cog.svg\",\n  new: $drac-yellow $clr-yellow-a700 \"@mdi/svg/svg/alert-decagram.svg\"\n) !default;\n\n  $old-admonitions: (\n    note:                       $drac-dark-yellow,\n    abstract:                   $drac-cyan,\n    info:                       $drac-light-blue,\n    tip:                        $drac-teal,\n    success:                    $drac-green,\n    question:                   $drac-light-green,\n    warning:                    $drac-orange,\n    failure:                    $drac-dark-red,\n    danger:                     $drac-red,\n    bug:                        $drac-dark-pink,\n    example:                    $drac-purple,\n    quote:                      $drac-grey\n  ) !default;\n\n/* Style new admonitions with dark or light colors */\n:root > * {\n  --md-admonition-bg-color: transparent;\n\n  &[data-md-color-scheme=\"dracula\"] {\n    --md-admonition-icon-color: $drac-dark-yellow;\n  }\n\n  @each $names, $prop in $new-admonitions {\n    $tint: nth($prop, 1);\n    $tint2: nth($prop, 2);\n    $name: nth($names, 1);\n\n    & {\n      --md-admonition-icon--#{$name}: svg-load(\"#{nth($prop, 3)}\");\n      --md-admonition-bg-color--#{$name}: #{transparentize($tint2, 0.9)};\n      --md-admonition-icon-color--#{$name}: #{$tint2};\n      --md-admonition-shadow-color--#{$name}: #{transparentize($tint2, 0.9)};\n    }\n\n    &[data-md-color-scheme=\"dracula\"] {\n      --md-admonition-bg-color--#{$name}: var(--md-default-bg-color--ultra-dark);\n      --md-admonition-icon-color--#{$name}: #{$tint};\n      --md-admonition-shadow-color--#{$name}: #{transparentize($tint, 0.9)};\n    }\n\n    @each $names, $tint in $old-admonitions {\n      $name: nth($names, 1);\n\n      & {\n        --md-admonition-bg-color--#{$name}: var(--md-default-bg-color--ultra-dark);\n        --md-admonition-icon-color--#{$name}: #{$tint};\n        --md-admonition-shadow-color--#{$name}: #{transparentize($tint, 0.9)};\n      }\n    }\n  }\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] .md-typeset .admonition {\n  border-color: var(--md-admonition-icon-color--note);\n  box-shadow: var(--md-shadow-z2);\n\n  &:focus-within {\n    box-shadow: 0 0 0 px2rem(4px) var(--md-admonition-shadow-color--note);\n  }\n\n  > .admonition-title {\n    background-color: var(--md-admonition-bg-color--note);\n    &::before {\n      background-color: var(--md-admonition-icon-color--note);\n    }\n    &::after {\n      color: var(--md-admonition-icon-color--note);\n    }\n  }\n}\n\n/* Style existing admonitions with dark mode colors */\n[data-md-color-scheme=\"dracula\"] {\n\n  @each $names, $prop in $old-admonitions {\n\n    $name: nth($names, 1);\n\n    // Define base class\n    .md-typeset .admonition.#{$name} {\n      border-color: var(--md-admonition-icon-color--#{$name});\n\n      &:focus-within {\n        box-shadow: 0 0 0 px2rem(4px) var(--md-admonition-shadow-color--#{$name});\n      }\n\n      // Define base class\n      > .admonition-title {\n        background-color: var(--md-admonition-bg-color--#{$name});\n        border-color: var(--md-admonition-icon-color--#{$name});\n\n        // Icon\n        &::before {\n          background-color: var(--md-admonition-icon-color--#{$name});\n        }\n        &::after {\n          color: var(--md-admonition-icon-color--#{$name});\n        }\n      }\n    }\n\n    // Define synonyms for base class\n    @if length($names) > 1 {\n      @for $n from 2 through length($names) {\n        .#{nth($names, $n)} {\n          @extend .#{$name};\n        }\n      }\n    }\n  }\n}\n\n@each $names, $prop in $new-admonitions {\n  $name: nth($names, 1);\n\n    // Define base class\n  .md-typeset .admonition.#{$name} {\n    border-color: var(--md-admonition-icon-color--#{$name});\n\n    &:focus-within {\n      box-shadow: 0 0 0 px2rem(4px) var(--md-admonition-shadow-color--#{$name});\n    }\n\n    > .admonition-title {\n      background-color: var(--md-admonition-bg-color--#{$name});\n      border-color: var(--md-admonition-icon-color--#{$name});\n\n      // Icon\n      &::before {\n        width: px2rem(20px);\n        height: px2rem(20px);\n        background-color: var(--md-admonition-icon-color--#{$name});\n        background-size: px2rem(20px);\n        mask-image: var(--md-admonition-icon--#{$name});\n        content: \"\\a0\";\n      }\n      &::after {\n        color: var(--md-admonition-icon-color--#{$name});\n      }\n    }\n  }\n\n  // Define synonyms for base class\n  @if length($names) > 1 {\n    @for $n from 2 through length($names) {\n      .#{nth($names, $n)} {\n        @extend .#{$name};\n      }\n    }\n  }\n}\n","mjx-container[display=true] {\n  font-size: 120% !important;\n}\n\nmjx-container:not([display]) {\n  font-size: 100% !important;\n}\n\n[data-md-color-scheme=\"slate\"],\n[data-md-color-scheme=\"dracula\"] {\n  /* stylelint-disable selector-class-pattern */\n  .CtxtMenu_InfoSignature input,\n  .CtxtMenu_InfoContent pre {\n    color: rgb(0, 0, 0);\n  }\n  .CtxtMenu_Info,\n  .CtxtMenu_Menu {\n    box-shadow: 0px 10px 20px rgb(0 0 0 / 0.5);\n  }\n  /* stylelint-enable selector-class-pattern */\n}\n\n.md-typeset .arithmatex {\n  overflow-x: auto !important;\n  overflow-y: hidden !important;\n}\n\n// Fix tag overlap in `KaTeX`\n.katex-display {\n  .katex-html {\n    display: flex !important;\n    flex-direction: row;\n    flex-wrap: nowrap;\n    align-items: baseline;\n    justify-content: space-between;\n    // overflow-x: auto;\n\n    .base {\n      display: inline !important;\n    }\n\n    .tag {\n      position: relative !important;\n      display: inline !important;\n      margin-left: var(--margin-small);\n    }\n  }\n}\n","/* Don't use box shadows */\n.md-typeset {\n  del,\n  ins,\n  mark {\n    &.critic {\n      padding: 0 px2em(4px, 16px);\n      color: unset;\n      box-shadow: none;\n    }\n  }\n\n  .critic.break {\n    margin: 0;\n  }\n}\n","/* Inherit admonition style */\n.md-typeset {\n  details {\n    @extend .admonition;\n\n    overflow: hidden;\n\n    // Title\n    > summary {\n      @extend .admonition-title;\n\n      // Disable accessibility focus\n      &:focus {\n        outline-style: none;\n      }\n    }\n  }\n}\n",".highlight {\n  .kc { // Keyword constant\n    color: var(--md-code-hl-constant-color);\n  }\n\n  .nc,  // Name, class\n  .ne,  // Name, exception\n  {\n    color: var(--md-code-hl-class-color);\n  }\n\n  .mb {\n    color: var(--md-code-hl-number-color);\n  }\n\n  .nb,  // Name, builtin\n  .bp { // Name, builtin pseudo\n    color: var(--md-code-hl-builtin-color);\n  }\n\n  .nn { // Name, namespace Name, namespace Name, namespace Name, namespace\n    color: var(--md-code-hl-namespace-color);\n  }\n\n  .na,  // Name, attribute\n  .nd,  // Name, decorator\n  .ni { // Name, entity\n    color: var(--md-code-hl-entity-color);\n  }\n  .nl,  // Name, label\n  .nt { // Name, tag\n    color: var(--md-code-hl-tag-color);\n  }\n}\n\n.md-typeset {\n\n  /* Allow code to look like code everywhere despite Material's current preference */\n  *:not(pre) > code {\n      margin: 0;\n      padding: 0 px2em( 4px, 13.6px);\n      color: var(--md-code-fg-color);\n      background-color: var(--md-code-inline-bg-color);\n      border-radius: px2rem(2px);\n      box-shadow: none;\n  }\n\n  /* Code that is also a link */\n  a {\n    > code {\n      color: inherit !important;\n      background-color: var(--md-code-link-bg-color) !important;\n      transition: color 125ms;\n      transition: background-color 125ms;\n\n      /* If we are linking highlighted, inline code, force it to just look like a code link */\n      * {\n        color: var(--md-typeset-a-color) !important;\n      }\n\n      &:hover {\n        background-color: var(--md-code-link-accent-bg-color) !important;\n\n        * {\n          color: var(--md-accent-fg-color) !important;\n        }\n      }\n    }\n  }\n\n  pre > code {\n    outline: none;\n  }\n\n  /* Don't always like code breaking in table cells */\n  td code {\n    word-break: normal;\n  }\n\n  .highlight {\n\n    /* Needed for tab preserving mode */\n    tab-size: 8;\n\n    + .result {\n      border-width: px2rem(2px);\n    }\n\n    /* `pymdownx-inline` mode */\n    [data-linenos] {\n\n      /* Special line mode coloring */\n      &.special::before {\n        background-color: var(--md-code-special-bg-color);\n      }\n    }\n  }\n\n    /* Special line number coloring for tables */\n  .highlighttable {\n    .linenodiv {\n      .special {\n        margin-right: px2em(-8px, 13.6px);\n        margin-left: px2em(-16px, 13.6px);\n        padding-right: px2em(8px, 13.6px);\n        padding-left: px2em(16px, 13.6px);\n        background-color: var(--md-code-special-bg-color);\n      }\n    }\n  }\n\n  // Filename span\n  .highlight span.filename {\n\n    // Style the filename banner\n    position: relative;\n    display: block;\n    margin-top: 1em;\n    padding: px2em(8px) px2em(16px, 13.6px) px2em(8px) px2em(40px, 13.6px);\n    font-weight: 700;\n    font-size: px2rem(13.6px);\n    background-color: var(--md-code-title-bg-color);\n    border-top-left-radius: px2rem(2px);\n    border-top-right-radius: px2rem(2px);\n\n    // Adjust margins and and general container look of code block\n    + pre {\n      margin-top: 0;\n\n      code {\n        border-top-left-radius: 0;\n        border-top-right-radius: 0;\n      }\n    }\n\n    // Add code icon\n    &::before {\n      position: absolute;\n      left: px2em(12px, 13.6px);\n      width: px2em(20px, 13.6px);\n      height: px2em(20px, 13.6px);\n      background-color: var(--md-default-fg-color);\n      mask-image: svg-load(\"@mdi/svg/svg/console.svg\");\n      mask-repeat: no-repeat;\n      mask-size: contain;\n      content: \"\";\n    }\n  }\n\n  .collapse-code {\n    position: relative;\n    margin-top: 1em;\n    margin-bottom: 1em;\n\n    pre {\n      margin-top: 0;\n      margin-bottom: 0;\n    }\n\n    input{\n      display: none;\n\n      ~ .code-footer {\n        width: 100%;\n        margin: 0;\n        padding: px2em(4px) px2em(8px) px2em(4px) px2em(0px);\n\n        label {\n          position: relative;\n          margin: 0.05em;\n          padding: 0.15em 0.8em;\n          color: var(--md-primary-bg-color);\n          font-size: 90%;\n          background-color: var(--md-primary-fg-color);\n          mask-repeat: no-repeat;\n          mask-size: contain;\n          border-radius: px2rem(2px);\n          cursor: pointer;\n          content: \"\";\n\n          &:hover {\n            background-color: var(--md-accent-fg-color);\n          }\n\n          &::before {\n            position: absolute;\n            top: 0.15em;\n            left: 0.15em;\n            display: block;\n            box-sizing: border-box;\n            width: 1.25em;\n            height: 1.25em;\n            background-color: var(--md-primary-bg-color);\n            background-size: 1.25em;\n            content: \"\";\n          }\n\n          &.expand {\n            display: none;\n\n            &::before {\n              mask-image: svg-load(\"@mdi/svg/svg/arrow-expand.svg\");\n            }\n          }\n          &.collapse::before {\n            mask-image: svg-load(\"@mdi/svg/svg/arrow-collapse.svg\");\n          }\n        }\n      }\n\n      &:checked {\n        ~ .code-footer label.expand {\n          display: inline;\n        }\n\n        ~ .code-footer label.collapse {\n          display: none;\n        }\n\n        + div.highlight code {\n          max-height: px2em(150px);\n          overflow: hidden;\n        }\n\n        ~ .code-footer {\n          position: absolute;\n          bottom: 0;\n          left: 0;\n          padding: px2em(32px) px2em(8px) px2em(8px) px2rem(16px);\n          background-image: linear-gradient(to bottom,\n              transparent,\n              var(--md-default-bg-color) 80%\n          100%);\n        }\n      }\n    }\n  }\n\n  @include break-to-device(mobile) {\n\n    > {\n      diagram-div {\n        margin-right: px2rem(-16px);\n        margin-left: px2rem(-16px);\n      }\n      .collapse-code {\n        margin-right: px2rem(-16px);\n        margin-left: px2rem(-16px);\n\n        label.collapse {\n          left: px2rem(16px);\n        }\n      }\n    }\n  }\n}\n",".md-typeset {\n\n  // Keyboard key\n  .keys {\n\n    // Define keyboard keys with left icon\n    @each $name, $code in (\n      // Extra Keys\n      \"power\":         \"\\23FB\",\n      \"fingerprint\":   \"\\261D\",\n    ) {\n      .key-#{$name}::before {\n        padding-right: px2em(6.4px);\n        content: $code;\n      }\n    }\n\n    // Define keyboard keys with right icon\n    @each $name, $code in (\n        // Extra Keys\n    ) {\n      .key-#{$name}::after {\n        padding-left: px2em(6.4px);\n        content: $code;\n      }\n    }\n  }\n}\n","// General styling for repository link icons\n:root > * {\n  --magiclink-email-icon: svg-load(\"@mdi/svg/svg/mail.svg\");\n  --magiclink-github-icon: svg-load(\"@mdi/svg/svg/github.svg\");\n  --magiclink-bitbucket-icon: svg-load(\"@mdi/svg/svg/bitbucket.svg\");\n  --magiclink-gitlab-icon: svg-load(\"@mdi/svg/svg/gitlab.svg\");\n  --magiclink-commit-icon: svg-load(\"@primer/octicons/build/svg/git-commit-24.svg\");\n  --magiclink-compare-icon: svg-load(\"@primer/octicons/build/svg/file-diff-24.svg\");\n  --magiclink-pull-icon: svg-load(\"@primer/octicons/build/svg/git-pull-request-24.svg\");\n  --magiclink-issue-icon: svg-load(\"@primer/octicons/build/svg/issue-opened-24.svg\");\n  --magiclink-discussion-icon: svg-load(\"@primer/octicons/build/svg/comment-discussion-24.svg\");\n}\n\n.md-typeset {\n  a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n    mask-image: var(--magiclink-email-icon);\n  }\n\n  .magiclink-repository,\n  .magiclink-compare,\n  .magiclink-commit,\n  .magiclink-pull,\n  .magiclink-issue,\n  .magiclink-discussion,\n  a[href^=\"mailto:\"] {\n    &:not(.magiclink-ignore) {\n      position: relative;\n      padding-left: px2em(22px);\n\n      &::before {\n        position: absolute;\n        top: 0;\n        left: 0;\n        display: block;\n        box-sizing: border-box;\n        width: px2em(20px);\n        height: px2em(20px);\n        background-color: var(--md-typeset-a-color);\n        background-size: px2em(20px);\n        transition: background-color 125ms;\n        mask-repeat: no-repeat;\n        mask-size: contain;\n        content: \"\";\n      }\n\n      &:hover::before {\n        background-color: var(--md-accent-fg-color);\n      }\n    }\n  }\n}\n\n// Assign icons to repository links\n@each $name, $icon in (\n  \"commit\": \"commit\",\n  \"compare\": \"compare\",\n  \"pull\": \"pull\",\n  \"issue\": \"issue\",\n  \"discussion\": \"discussion\"\n) {\n  .md-typeset {\n    .magiclink-#{$name}:not(.magiclink-ignore) {\n      &::before {\n        mask-image: var(--magiclink-#{$icon}-icon);\n      }\n    }\n  }\n}\n\n// Assign icons to repository links\n@each $name, $icon in (\n  \"github\": \"github\",\n  \"gitlab\": \"gitlab\",\n  \"bitbucket\": \"bitbucket\"\n) {\n  .md-typeset {\n    .magiclink-repository.magiclink-#{$name}:not(.magiclink-ignore) {\n      &::before {\n        mask-image: var(--magiclink-#{$icon}-icon);\n      }\n    }\n  }\n}\n","/* Shadow boxes sometimes give issues, so just pad. */\n.md-typeset mark:not(.critic) {\n  box-shadow: none;\n}\n",".md-typeset {\n\n  /* Progress Bars */\n  .progress-label {\n    position: absolute;\n    width: 100%;\n    margin: 0;\n    color: var(--md-text-color);\n    font-weight: 700;\n    line-height: px2rem(28px);\n    white-space: nowrap;\n    text-align: center;\n    text-shadow:\n      px2em(-1px) px2em(-1px) px2em(6px) var(--md-default-bg-color--light),\n      px2em(1px) px2em(-1px) px2em(6px) var(--md-default-bg-color--light),\n      px2em(-1px) px2em(1px) px2em(6px) var(--md-default-bg-color--light),\n      px2em(1px) px2em(1px) px2em(6px) var(--md-default-bg-color--light);\n  }\n\n  .progress-bar {\n    float: left;\n    height: px2rem(24px);\n    background-color: $clr-blue-a400;\n  }\n\n  /* Stripe animation */\n  .candystripe-animate {\n    .progress-bar{\n      animation: animate-stripes 3s linear infinite;\n    }\n  }\n\n  .progress {\n    position: relative;\n    display: block;\n    width: 100%;\n    height: px2rem(24px);\n    margin: px2rem(10px) 0;\n    background-color: var(--md-default-fg-color--lightest);\n\n    &.thin {\n      height: px2rem(8px);\n      margin-top: px2rem(18px);\n\n      .progress-label {\n        margin-top: px2rem(-8px);\n      }\n\n      .progress-bar {\n        height: px2rem(8px);\n      }\n    }\n\n    &.candystripe .progress-bar {\n      background-image:\n        linear-gradient(\n          135deg,\n          var(--md-progress-stripe) 27%,\n          transparent 27%,\n          transparent 52%,\n          var(--md-progress-stripe) 52%,\n          var(--md-progress-stripe) 77%,\n          transparent 77%,\n          transparent\n        );\n      background-size: px2rem(40px) px2rem(40px);\n    }\n  }\n\n  @each $percent, $color in (\n    \"100\": var(--md-progress-100),\n    \"80\": var(--md-progress-80),\n    \"60\": var(--md-progress-60),\n    \"40\": var(--md-progress-40),\n    \"20\": var(--md-progress-20),\n    \"0\": var(--md-progress-0)\n  ) {\n    .progress-#{$percent}plus {\n      .progress-bar {\n        background-color: $color;\n      }\n    }\n  }\n\n  @keyframes animate-stripes {\n    0% {\n      background-position: 0 0;\n    }\n\n    100% {\n      background-position: px2rem(120px) 0;\n    }\n  }\n}\n","/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n  .md-typeset {\n    .tabbed-set > .tabbed-labels {\n      box-shadow: 0 px2rem(-1px) var(--md-default-fg-color--lighter) inset;\n    }\n  }\n}\n\n/* Style code blocks to fill full tab,\n   but otherwise, pad content. */\n.md-typeset {\n  .tabbed-alternate {\n    &.tabbed-set .tabbed-control {\n      width: px2rem(40px);\n\n      &[hidden] {\n        width: px2rem(24px);\n        opacity: 0;\n      }\n    }\n\n    &.tabbed-set > .tabbed-content > .tabbed-block {\n      padding: 0 px2rem(12px);\n\n      > {\n        pre,\n        .codehilite,\n        .codehilitetable,\n        .highlight,\n        .highlighttable {\n\n          &:only-child {\n            margin-right: px2rem(-24px);\n            margin-left: px2rem(-24px);\n            padding-right: px2rem(12px);\n            padding-left: px2rem(12px);\n\n            span.filename {\n              margin-top: 0;\n            }\n          }\n        }\n\n        .collapse-code:only-child {\n          margin-top: 0;\n\n          margin-right: px2rem(-24px);\n          margin-left: px2rem(-24px);\n          padding-right: px2rem(12px);\n          padding-left: px2rem(12px);\n\n          > .code-footer {\n            left: px2rem(12px)\n          }\n        }\n\n        diagram-div:only-child {\n          margin-right: px2rem(-24px);\n          margin-left: px2rem(-24px);\n          padding-right: px2rem(12px);\n          padding-left: px2rem(12px);\n        }\n      }\n    }\n  }\n}\n\n.js .md-typeset .tabbed-labels::before {\n  background-color: var(--md-accent-fg-color);\n}\n\n/* Ignore mobile overflow styling that extends the tab bar */\n@include break-to-device(mobile) {\n  [dir=ltr] .md-content__inner > .tabbed-set .tabbed-labels {\n    padding-left: 0;\n  }\n\n  .md-content__inner > .tabbed-set .tabbed-labels {\n    max-width: 100%;\n    margin: 0;\n    padding-inline-start: 0;\n    scroll-padding-inline-start: 0;\n\n    &::after {\n      padding-inline-end: 0;\n      content: none;\n    }\n\n    // Tabbed control previous\n    ~ .tabbed-control--prev {\n      margin-inline-start: 0;\n      padding-inline-start: 0;\n    }\n\n    // Tabbed control next\n    ~ .tabbed-control--next {\n      margin-inline-end: 0;\n      padding-inline-end: 0;\n    }\n  }\n}\n","/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n  .md-typeset table:not([class]) {\n    box-shadow: var(--md-shadow-z2);\n\n    tr:hover {\n      background-color: rgba(0,0,0,.08);\n    }\n\n    th {\n      color: var(--md-text-color);\n      background-color: var(--md-default-bg-color--ultra-dark);\n      border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n\n    td {\n      border-top: px2rem(1px) solid var(--md-default-fg-color--lighter);\n    }\n  }\n}\n","/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n  .md-typeset .task-list-control {\n    .task-list-indicator::before {\n    \tbackground-color: var(--md-default-fg-color--lighter);\n    }\n\n    [type=checkbox]:checked + .task-list-indicator::before {\n    \tbackground-color: $drac-green;\n    }\n  }\n}\n","// Header anchors\n.md-typeset {\n  .headerlink {\n    width: px2em(16px);\n    height: px2em(16px);\n    vertical-align: middle;\n    background-color: var(--md-default-fg-color--lighter);\n    background-size: px2em(16px);\n    mask-size: px2em(16px);\n    mask-repeat: no-repeat;\n    visibility: visible;\n    mask-image: svg-load(\"@mdi/svg/svg/link.svg\");\n  }\n\n  .headerlink:hover,\n  [id]:target .headerlink {\n    background-color: var(--md-accent-fg-color);\n  }\n}\n","/* Special handling of Mermaid content. */\ndiagram-div {\n  overflow: auto;\n}\n","html {\n  background-color: transparent;\n}\n\n[data-md-component=\"announce\"] .twemoji {\n  color: var(--md-primary-fg-color);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n\n  --md-text-color: var(--md-default-fg-color);\n  background-color: var(--md-default-bg-color);\n\n  // Footer color shades\n  --md-footer-bg-color:                transparent;\n  --md-footer-bg-color--dark:          var(--md-default-bg-color--darkest);\n\n  // Header colors\n  --md-header-fg-color: var(--md-text-color);\n  --md-header-bg-color: var(--md-default-bg-color--darkest);\n\n  // Header\n  .md-header {\n    color: var(--md-text-color);\n    background-color: var(--md-header-bg-color);\n    border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n\n    &[data-md-state=shadow] {\n        box-shadow: 0 0 px2rem(4px) rgba(0,0,0,.15),\n                    0 0 px2rem(4px) px2rem(8px) rgba(0,0,0,.2);\n    }\n  }\n\n  .md-top {\n    background-color: var(--md-default-bg-color--dark);\n\n    &:hover {\n      background-color: var(--md-primary-fg-color);\n    }\n  }\n\n  // Tabs\n  .md-tabs {\n    color: var(--md-text-color);\n    background-color: var(--md-primary-fg-color--transparent);\n\n    &__link--active {\n        color: var(--md-primary-fg-color);\n    }\n\n    &__link:hover {\n        color: var(--md-accent-fg-color);\n    }\n  }\n\n  // Hero\n  .md-hero {\n    color: var(--md-text-color);\n    background-color: var(--md-primary-fg-color--transparent);\n  }\n\n  // Navigation\n  .md-nav__source {\n    color: var(--md-text-color);\n  }\n\n  .md-nav__link[data-md-state=blur] {\n    color: var(--md-default-fg-color--light);\n  }\n\n  .md-nav__item .md-nav__link--active {\n    color: var(--md-primary-fg-color);\n  }\n\n  .md-nav__link {\n    &:focus,\n    &:hover {\n      color: var(--md-accent-fg-color);\n    }\n  }\n\n  @include break-to-device(tablet) {\n\n    .md-nav--primary .md-nav__item--active > .md-nav__link:not(:hover) {\n      color: var(--md-primary-fg-color);\n    }\n\n    // Site title in main navigation\n    .md-nav--primary .md-nav__title {\n      color: var(--md-text-color);\n      background-color: var(--md-header-bg-color);\n      border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n  }\n\n  @include break-to-device(tablet portrait) {\n\n    // Repository containing source\n    .md-nav__source {\n      color: var(--md-text-color);\n      background-color: var(--md-primary-fg-color--transparent);\n    }\n\n    .md-nav .md-nav__title {\n      color: var(--md-text-color);\n      background-color: var(--md-header-bg-color);\n      border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n  }\n\n  // Search\n  .md-search__input {\n    color: var(--md-text-color);\n    background-color: var(--md-accent-bg-color--light);\n\n    &:hover {\n      background-color: var(--md-default-bg-color--light);\n    }\n\n    ~ .md-search__icon {\n      color: var(--md-text-color);\n    }\n    &::placeholder {\n      color: var(--md-default-fg-color--light);\n    }\n  }\n\n  [data-md-toggle=search]:checked~.md-header .md-search__input {\n    background-color: transparent;\n  }\n\n  .md-search__suggest {\n    color: var(--md-default-autocomplete-fg-color);\n  }\n\n  .md-search__overlay, .md-overlay {\n    background-color: var(--md-default-bg-color--light);\n  }\n\n  // Footer\n  .md-footer {\n    &-nav__direction {\n      color: var(--md-primary-fg-color);\n    }\n\n    &-meta {\n      border-top: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n  }\n\n  // Announcements\n  [data-md-component=\"announce\"] {\n    background-color: var(--md-default-bg-color--ultra-dark);\n  }\n}\n\n/* Don't force capitalization of `H5` elements. */\n.md-typeset {\n  h5 {\n    color: var(--md-text-color);\n    text-transform: none;\n  }\n}\n\n.md-typeset__scrollwrap,\n.md-sidebar__scrollwrap,\n.md-search__scrollwrap,\n.md-typeset pre > code,\n.md-typeset div.mermaid,\n.md-typeset div.diagram,\n.md-typeset mermaid-div,\n.md-typeset diagram-div,\n.md-typeset pre.arithmatex,\n.md-typeset div.arithmatex {\n  // Firefox scrollbar and thumb\n  scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n  scrollbar-width: thin;\n\n  // Firefox hovered scrollbar and thumb\n  &:hover {\n    scrollbar-color: var(--md-accent-fg-color) transparent;\n  }\n\n  // Override native scrollbar styles\n  &::-webkit-scrollbar {\n    width: px2rem(4px);\n    height: px2rem(4px);\n  }\n\n  &::-webkit-scrollbar-corner {\n    background-color: transparent;\n  }\n\n  // Scrollbar thumb\n  &::-webkit-scrollbar-thumb {\n    background-color: var(--md-default-fg-color--lighter);\n\n    // Hovered scrollbar thumb\n    &:hover {\n      background-color: var(--md-accent-fg-color);\n    }\n  }\n}\n","////\n/// Copyright (c) 2016-2020 Martin Donath <martin.donath@squidfunk.com>\n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Variables\n// ----------------------------------------------------------------------------\n\n///\n/// Device-specific breakpoints\n///\n/// @example\n///   $break-devices: (\n///     mobile: (\n///       portrait:  220px  479px,\n///       landscape: 480px  719px\n///     ),\n///     tablet: (\n///       portrait:  720px  959px,\n///       landscape: 960px  1219px\n///     ),\n///     screen: (\n///       small:     1220px 1599px,\n///       medium:    1600px 1999px,\n///       large:     2000px\n///     )\n///   );\n///\n$break-devices: () !default;\n\n// ----------------------------------------------------------------------------\n// Helpers\n// ----------------------------------------------------------------------------\n\n///\n/// Choose minimum and maximum device widths\n///\n@function break-select-min-max($devices) {\n  $min: 1000000;\n  $max: 0;\n  @each $key, $value in $devices {\n    @while type-of($value) == map {\n      $value: break-select-min-max($value);\n    }\n    @if type-of($value) == list {\n      @each $number in $value {\n        @if type-of($number) == number {\n          $min: min($number, $min);\n          @if $max != null {\n            $max: max($number, $max);\n          }\n        } @else {\n          @error \"Invalid number: #{$number}\";\n        }\n      }\n    } @else if type-of($value) == number {\n      $min: min($value, $min);\n      $max: null;\n    } @else {\n      @error \"Invalid value: #{$value}\";\n    }\n  }\n  @return $min, $max;\n}\n\n///\n/// Select minimum and maximum widths for a device breakpoint\n///\n@function break-select-device($device) {\n  $current: $break-devices;\n  @for $n from 1 through length($device) {\n    @if type-of($current) == map {\n      $current: map-get($current, nth($device, $n));\n    } @else {\n      @error \"Invalid device map: #{$devices}\";\n    }\n  }\n  @if type-of($current) == list or type-of($current) == number {\n    $current: (default: $current);\n  }\n  @return break-select-min-max($current);\n}\n\n// ----------------------------------------------------------------------------\n// Mixins\n// ----------------------------------------------------------------------------\n\n///\n/// A minimum-maximum media query breakpoint\n///\n@mixin break-at($breakpoint) {\n  @if type-of($breakpoint) == number {\n    @media screen and (min-width: $breakpoint) {\n      @content;\n    }\n  } @else if type-of($breakpoint) == list {\n    $min: nth($breakpoint, 1);\n    $max: nth($breakpoint, 2);\n    @if type-of($min) == number and type-of($max) == number {\n      @media screen and (min-width: $min) and (max-width: $max) {\n        @content;\n      }\n    } @else {\n      @error \"Invalid breakpoint: #{$breakpoint}\";\n    }\n  } @else {\n    @error \"Invalid breakpoint: #{$breakpoint}\";\n  }\n}\n\n///\n/// An orientation media query breakpoint\n///\n@mixin break-at-orientation($breakpoint) {\n  @if type-of($breakpoint) == string {\n    @media screen and (orientation: $breakpoint) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid breakpoint: #{$breakpoint}\";\n  }\n}\n\n///\n/// A maximum-aspect-ratio media query breakpoint\n///\n@mixin break-at-ratio($breakpoint) {\n  @if type-of($breakpoint) == number {\n    @media screen and (max-aspect-ratio: $breakpoint) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid breakpoint: #{$breakpoint}\";\n  }\n}\n\n///\n/// A minimum-maximum media query device breakpoint\n///\n@mixin break-at-device($device) {\n  @if type-of($device) == string {\n    $device: $device,;\n  }\n  @if type-of($device) == list {\n    $breakpoint: break-select-device($device);\n    @if nth($breakpoint, 2) != null {\n      $min: nth($breakpoint, 1);\n      $max: nth($breakpoint, 2);\n      @media screen and (min-width: $min) and (max-width: $max) {\n        @content;\n      }\n    } @else {\n      @error \"Invalid device: #{$device}\";\n    }\n  } @else {\n    @error \"Invalid device: #{$device}\";\n  }\n}\n\n///\n/// A minimum media query device breakpoint\n///\n@mixin break-from-device($device) {\n  @if type-of($device) == string {\n    $device: $device,;\n  }\n  @if type-of($device) == list {\n    $breakpoint: break-select-device($device);\n    $min: nth($breakpoint, 1);\n    @media screen and (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid device: #{$device}\";\n  }\n}\n\n///\n/// A maximum media query device breakpoint\n///\n@mixin break-to-device($device) {\n  @if type-of($device) == string {\n    $device: $device,;\n  }\n  @if type-of($device) == list {\n    $breakpoint: break-select-device($device);\n    $max: nth($breakpoint, 2);\n    @media screen and (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid device: #{$device}\";\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["palette/_colors.scss","extra.css","_general.scss","extensions/_admonition.scss","extensions/_arithmatex.scss","extensions/_critic.scss","extensions/_details.scss","extensions/_highlight.scss","extensions/_keys.scss","extensions/_magiclink.scss","extensions/_mark.scss","extensions/_progressbar.scss","extensions/_tabbed.scss","extensions/_tables.scss","extensions/_tasklist.scss","extensions/_toc.scss","extensions/_superfences.scss","_material.scss","utilities/_break.scss"],"names":[],"mappings":"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","file":"extra-8611f6c398.css","sourcesContent":["@import \"./dracula\";\n\n:root > * {\n  // Custom code colors\n  --md-code-link-bg-color: hsla(0, 0%, 96%, 1);\n  --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n  --md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);\n  --md-code-title-bg-color: var(--md-code-bg-color);\n  --md-code-inline-bg-color: var(--md-code-bg-color);\n\n  --md-code-special-bg-color: #{darken(hsl(0, 0%, 96%), 5%)};\n  --md-code-alternate-bg-color: var(--md-code-bg-color);\n\n  --md-code-hl-punctuation-color: var(--md-code-fg-color);\n  --md-code-hl-namespace-color: var(--md-code-fg-color);\n\n  --md-code-hl-entity-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-tag-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-builtin-color: var(--md-code-hl-constant-color);\n  --md-code-hl-class-color: var(--md-code-hl-function-color);\n\n  // Various Material related color variables\n  --md-typeset-a-color: #{$clr-cyan-500};\n\n  // Progressbar colors\n  --md-progress-stripe: var(--md-default-bg-color--lighter);\n  --md-progress-100: #{$clr-green-a400};\n  --md-progress-80: #{$clr-green-a400};\n  --md-progress-60: #{$clr-yellow-700};\n  --md-progress-40: #{$clr-orange-a400};\n  --md-progress-20: #{$clr-red-a200};\n  --md-progress-0: #{$clr-red-a400};\n\n  // Keys colors\n  --md-typeset-kbd-color: #{shade(hsla(0, 100%, 100%, 1), 8%)};\n  --md-typeset-kbd-border-color: #{shade(hsla(0, 100%, 100%, 1), 28%)};\n  --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1);\n\n  &[data-md-color-scheme=\"slate\"] {\n    // Custom code colors\n    --md-code-link-bg-color: hsla(232, 15%, 15%, 1);\n    --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n    --md-code-special-bg-color: #{lighten(hsl(232, 15%, 15%), 5%)};\n    --md-default-bg-color--trans: hsla(232,15%,15%, 0);\n\n    // Keys colors\n    --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n    --md-typeset-kbd-border-color: #{darken(rgb(46, 48, 62), 9%)};\n    --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n  }\n\n  // Dark mode color changes\n  &[data-md-color-scheme=\"dracula\"] {\n    // Default color shades\n    --md-default-fg-color:               #{transparentize($drac-fg, 0.13)};\n    --md-default-fg-color--light:        #{transparentize($drac-fg, 0.46)};\n    --md-default-fg-color--lighter:      #{transparentize($drac-fg, 0.84)};\n    --md-default-fg-color--lightest:     #{transparentize($drac-fg, 0.93)};\n    --md-default-autocomplete-fg-color:  #{transparentize($drac-fg, 0.60)};\n    --md-shadow-z2:                      0 #{px2rem(4px)} #{px2rem(10px)} hsla(0, 0%, 0%, 0.3),\n                                         0 0              #{px2rem(1px)}  hsla(0, 0%, 0%, 0.2);\n\n    --md-default-bg-color:               var(--md-default-bg-color--darkest);\n    --md-default-bg-color--light:        #{transparentize($drac-default-bg, 0.3)};\n    --md-default-bg-color--lighter:      #{transparentize($drac-default-bg, 0.7)};\n    --md-default-bg-color--lightest:     #{transparentize($drac-default-bg, 0.88)};\n    --md-default-bg-color--trans:        #{transparentize($drac-default-bg, 1)};\n\n    // Dark specific colors\n    --md-default-bg-color--dark:         #{darken($drac-default-bg, 3%)};\n    --md-default-bg-color--darker:       #{darken($drac-default-bg, 6%)};\n    --md-default-bg-color--darkest:      #{darken($drac-default-bg, 9%)};\n    --md-default-bg-color--ultra-dark:   #{darken($drac-default-bg, 15%)};\n\n    // General text\n    --md-text-color: var(--md-default-fg-color);\n    --md-typeset-color: var(--md-default-fg-color);\n\n    // Admonition colors\n    --md-admonition-fg-color: var(--md-default-fg-color);\n\n    // Code colors\n    --md-code-fg-color: #{$drac-fg};\n    --md-code-bg-color: #{$drac-bg};\n    --md-code-title-bg-color: var(--md-default-bg-color--ultra-dark);\n    --md-code-inline-bg-color: #{lighten($drac-bg, 5%)};\n    --md-code-hl-operator-color: #{$drac-pink};\n    --md-code-hl-punctuation-color: #{$drac-fg};\n    --md-code-hl-string-color: #{$drac-yellow};\n    --md-code-hl-special-color: #{$drac-purple};\n    --md-code-hl-number-color: #{$drac-purple};\n    --md-code-hl-keyword-color: #{$drac-pink};\n    --md-code-hl-name-color: #{$drac-fg};\n    --md-code-hl-constant-color: #{$drac-purple};\n    --md-code-hl-function-color: #{$drac-green};\n    --md-code-hl-comment-color: #{$drac-blue};\n    --md-code-hl-variable-color: #{$drac-orange};\n    --md-code-hl-generic-color: #{$drac-blue};\n    --md-code-hl-color: #{$drac-selection};\n\n    // Custom code colors\n    --md-code-hl-entity-color: #{$drac-green};\n    --md-code-hl-tag-color: #{$drac-pink};\n    --md-code-hl-namespace-color: #{$drac-fg};\n    --md-code-hl-builtin-color: #{$drac-cyan};\n    --md-code-hl-class-color: #{$drac-cyan};\n\n    --md-code-special-bg-color: #{darken($drac-bg, 5%)};\n    --md-code-alternate-bg-color: #{tint($drac-bg, 10%)};\n    --md-code-link-bg-color: #{mix($drac-cyan, $drac-bg, 15%)};\n\n    // Various Material related color variables\n    --md-typeset-a-color: #{$drac-cyan};\n    --md-typeset-mark-color: #{mix($drac-yellow, $drac-bg, 35%)};\n    --md-typeset-del-color: #{mix($drac-pink, $drac-bg, 35%)};\n    --md-typeset-ins-color: #{mix($drac-green, $drac-bg, 35%)};\n\n    // Progressbar colors\n    --md-progress-stripe: var(--md-default-bg-color--lightest);\n    --md-progress-100: #{$drac-green};\n    --md-progress-80: #{$drac-light-green};\n    --md-progress-60: #{$drac-yellow};\n    --md-progress-40: #{$drac-orange};\n    --md-progress-20: #{$drac-pink};\n    --md-progress-0: #{$drac-red};\n\n    // Keys colors\n    --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n    --md-typeset-kbd-border-color: var(--md-default-bg-color--ultra-dark);\n    --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n  }\n}\n\n// ----------------------------------------------------------------------------\n// Rules: primary colors\n// ----------------------------------------------------------------------------\n\n@each $name, $colors in (\n  \"red\":         $drac-red         lighten($drac-red, 5%)   darken($drac-red, 5%),\n  \"pink\":        $drac-pink        lighten($drac-pink, 5%)   darken($drac-pink, 5%),\n  \"purple\":      $drac-purple      lighten($drac-purple, 5%)   darken($drac-purple, 5%),\n  \"deep-purple\": $drac-purple      lighten($drac-purple, 5%)   darken($drac-purple, 5%),\n  \"blue\":        $drac-blue        lighten($drac-blue, 5%)   darken($drac-blue, 5%),\n  \"indigo\":      $drac-blue        lighten($drac-blue, 5%)   darken($drac-blue, 5%),\n  \"light-blue\":  $drac-blue        lighten($drac-blue, 5%)   darken($drac-blue, 5%),\n  \"cyan\":        $drac-cyan        lighten($drac-cyan, 5%)   darken($drac-cyan, 5%),\n  \"teal\":        $drac-cyan        lighten($drac-cyan, 5%)   darken($drac-cyan, 5%),\n  \"green\":       $drac-green       lighten($drac-green, 5%)   darken($drac-green, 5%),\n  \"light-green\": $drac-green       lighten($drac-green, 5%)   darken($drac-green, 5%),\n  \"lime\":        $drac-green       lighten($drac-green, 5%)   darken($drac-green, 5%),\n  \"yellow\":      $drac-yellow      lighten($drac-yellow, 5%)   darken($drac-yellow, 5%),\n  \"amber\":       $drac-yellow      lighten($drac-yellow, 5%)   darken($drac-yellow, 5%),\n  \"orange\":      $drac-orange      lighten($drac-orange, 5%)   darken($drac-orange, 5%),\n  \"deep-orange\": $drac-orange      lighten($drac-orange, 5%)   darken($drac-orange, 5%)\n) {\n\n  // Color palette\n  [data-md-color-scheme=\"dracula\"][data-md-color-primary=\"#{$name}\"],\n  [data-md-color-scheme=\"dracula\"] :not([data-md-color-scheme])[data-md-color-primary=\"#{$name}\"]\n   {\n\n    --md-primary-code-bg-color:         #{mix($drac-bg, nth($colors, 1), 85%)};\n    --md-primary-fg-color:              hsla(#{hex2hsl(nth($colors, 1))}, 1);\n    --md-primary-fg-color--transparent: hsla(#{hex2hsl(nth($colors, 1))}, 0.1);\n    --md-primary-fg-color--light:       hsla(#{hex2hsl(nth($colors, 2))}, 1);\n    --md-primary-fg-color--dark:        hsla(#{hex2hsl(nth($colors, 3))}, 1);\n    --md-primary-bg-color:              var(--md-default-bg-color);\n    --md-primary-bg-color--light:       var(--md-default-bg-color--light);\n  }\n}\n\n// ----------------------------------------------------------------------------\n// Rules: accent colors\n// ----------------------------------------------------------------------------\n\n@each $name, $color in (\n  \"red\":         darken($drac-red, 5%),\n  \"pink\":        darken($drac-pink, 5%),\n  \"purple\":      darken($drac-purple, 5%),\n  \"deep-purple\": darken($drac-purple, 5%),\n  \"blue\":        darken($drac-blue, 5%),\n  \"indigo\":      darken($drac-blue, 5%),\n  \"light-blue\":  darken($drac-blue, 5%),\n  \"cyan\":        darken($drac-cyan, 5%),\n  \"teal\":        darken($drac-cyan, 5%),\n  \"green\":       darken($drac-green, 5%),\n  \"light-green\": darken($drac-green, 5%),\n  \"lime\":        darken($drac-green, 5%),\n  \"yellow\":      darken($drac-yellow, 5%),\n  \"amber\":       darken($drac-yellow, 5%),\n  \"orange\":      darken($drac-orange, 5%),\n  \"deep-orange\": darken($drac-orange, 5%)\n) {\n\n  // Color palette\n  [data-md-color-scheme=\"dracula\"][data-md-color-accent=\"#{$name}\"],\n  [data-md-color-scheme=\"dracula\"] :not([data-md-color-scheme])[data-md-color-primary=\"#{$name}\"] {\n    --md-code-link-accent-bg-color:    #{mix($color, $drac-bg, 15%)};\n    --md-accent-fg-color:              hsla(#{hex2hsl($color)}, 1);\n    --md-accent-fg-color--transparent: hsla(#{hex2hsl($color)}, 0.1);\n    --md-accent-bg-color:              var(--md-default-bg-color);\n    --md-accent-bg-color--light:       var(--md-default-bg-color--light);\n  }\n}\n","@charset \"UTF-8\";\n:root > * {\n  --md-code-link-bg-color: hsla(0, 0%, 96%, 1);\n  --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n  --md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);\n  --md-code-title-bg-color: var(--md-code-bg-color);\n  --md-code-inline-bg-color: var(--md-code-bg-color);\n  --md-code-special-bg-color: #e8e8e8;\n  --md-code-alternate-bg-color: var(--md-code-bg-color);\n  --md-code-hl-punctuation-color: var(--md-code-fg-color);\n  --md-code-hl-namespace-color: var(--md-code-fg-color);\n  --md-code-hl-entity-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-tag-color: var(--md-code-hl-keyword-color);\n  --md-code-hl-builtin-color: var(--md-code-hl-constant-color);\n  --md-code-hl-class-color: var(--md-code-hl-function-color);\n  --md-typeset-a-color: #00bcd4;\n  --md-progress-stripe: var(--md-default-bg-color--lighter);\n  --md-progress-100: #00e676;\n  --md-progress-80: #00e676;\n  --md-progress-60: #fbc02d;\n  --md-progress-40: #ff9100;\n  --md-progress-20: #ff5252;\n  --md-progress-0: #ff1744;\n  --md-typeset-kbd-color: #ebebeb;\n  --md-typeset-kbd-border-color: #b8b8b8;\n  --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1);\n}\n:root > *[data-md-color-scheme=slate] {\n  --md-code-link-bg-color: hsla(232, 15%, 15%, 1);\n  --md-code-link-accent-bg-color: var(--md-code-link-bg-color);\n  --md-code-special-bg-color: #2b2d3b;\n  --md-default-bg-color--trans: hsla(232,15%,15%, 0);\n  --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n  --md-typeset-kbd-border-color: #1a1c24;\n  --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-default-fg-color: rgba(248, 248, 242, 0.87);\n  --md-default-fg-color--light: rgba(248, 248, 242, 0.54);\n  --md-default-fg-color--lighter: rgba(248, 248, 242, 0.16);\n  --md-default-fg-color--lightest: rgba(248, 248, 242, 0.07);\n  --md-default-autocomplete-fg-color: rgba(248, 248, 242, 0.4);\n  --md-shadow-z2: 0 0.2rem 0.5rem hsla(0, 0%, 0%, 0.3),\n                                       0 0 0.05rem hsla(0, 0%, 0%, 0.2);\n  --md-default-bg-color: var(--md-default-bg-color--darkest);\n  --md-default-bg-color--light: rgba(50, 52, 67, 0.7);\n  --md-default-bg-color--lighter: rgba(50, 52, 67, 0.3);\n  --md-default-bg-color--lightest: rgba(50, 52, 67, 0.12);\n  --md-default-bg-color--trans: rgba(50, 52, 67, 0);\n  --md-default-bg-color--dark: #2b2e3b;\n  --md-default-bg-color--darker: #252732;\n  --md-default-bg-color--darkest: #1e2029;\n  --md-default-bg-color--ultra-dark: #111217;\n  --md-text-color: var(--md-default-fg-color);\n  --md-typeset-color: var(--md-default-fg-color);\n  --md-admonition-fg-color: var(--md-default-fg-color);\n  --md-code-fg-color: hsl(60, 30%, 96%);\n  --md-code-bg-color: hsl(231, 15%, 18%);\n  --md-code-title-bg-color: var(--md-default-bg-color--ultra-dark);\n  --md-code-inline-bg-color: #323443;\n  --md-code-hl-operator-color: hsl(326, 100%, 74%);\n  --md-code-hl-punctuation-color: hsl(60, 30%, 96%);\n  --md-code-hl-string-color: hsl(65, 92%, 76%);\n  --md-code-hl-special-color: hsl(265, 89%, 78%);\n  --md-code-hl-number-color: hsl(265, 89%, 78%);\n  --md-code-hl-keyword-color: hsl(326, 100%, 74%);\n  --md-code-hl-name-color: hsl(60, 30%, 96%);\n  --md-code-hl-constant-color: hsl(265, 89%, 78%);\n  --md-code-hl-function-color: hsl(135, 94%, 65%);\n  --md-code-hl-comment-color: hsl(225, 27%, 51%);\n  --md-code-hl-variable-color: hsl(31, 100%, 71%);\n  --md-code-hl-generic-color: hsl(225, 27%, 51%);\n  --md-code-hl-color: hsl(231, 25%, 25%);\n  --md-code-hl-entity-color: hsl(135, 94%, 65%);\n  --md-code-hl-tag-color: hsl(326, 100%, 74%);\n  --md-code-hl-namespace-color: hsl(60, 30%, 96%);\n  --md-code-hl-builtin-color: hsl(191, 97%, 77%);\n  --md-code-hl-class-color: hsl(191, 97%, 77%);\n  --md-code-special-bg-color: #1c1e26;\n  --md-code-alternate-bg-color: #3d3e49;\n  --md-code-link-bg-color: #364653;\n  --md-typeset-a-color: hsl(191, 97%, 77%);\n  --md-typeset-mark-color: #6e7252;\n  --md-typeset-del-color: #734568;\n  --md-typeset-ins-color: #36724e;\n  --md-progress-stripe: var(--md-default-bg-color--lightest);\n  --md-progress-100: hsl(135, 94%, 65%);\n  --md-progress-80: hsl(135, 92%, 79%);\n  --md-progress-60: hsl(65, 92%, 76%);\n  --md-progress-40: hsl(31, 100%, 71%);\n  --md-progress-20: hsl(326, 100%, 74%);\n  --md-progress-0: hsl(0, 100%, 67%);\n  --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n  --md-typeset-kbd-border-color: var(--md-default-bg-color--ultra-dark);\n  --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=red],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=red] {\n  --md-primary-code-bg-color: #47303a;\n  --md-primary-fg-color: hsla(0deg, 100%, 67%, 1);\n  --md-primary-fg-color--transparent: hsla(0deg, 100%, 67%, 0.1);\n  --md-primary-fg-color--light: hsla(0deg, 100%, 72%, 1);\n  --md-primary-fg-color--dark: hsla(0deg, 100%, 62%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=pink],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=pink] {\n  --md-primary-code-bg-color: #47354b;\n  --md-primary-fg-color: hsla(326deg, 100%, 74%, 1);\n  --md-primary-fg-color--transparent: hsla(326deg, 100%, 74%, 0.1);\n  --md-primary-fg-color--light: hsla(326deg, 100%, 79%, 1);\n  --md-primary-fg-color--dark: hsla(326deg, 100%, 69%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=purple] {\n  --md-primary-code-bg-color: #3e3952;\n  --md-primary-fg-color: hsla(265deg, 89%, 78%, 1);\n  --md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.1);\n  --md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);\n  --md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=deep-purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-purple] {\n  --md-primary-code-bg-color: #3e3952;\n  --md-primary-fg-color: hsla(265deg, 89%, 78%, 1);\n  --md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.1);\n  --md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);\n  --md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=blue] {\n  --md-primary-code-bg-color: #303446;\n  --md-primary-fg-color: hsla(225deg, 27%, 51%, 1);\n  --md-primary-fg-color--transparent: hsla(225deg, 27%, 51%, 0.1);\n  --md-primary-fg-color--light: hsla(225deg, 27%, 56%, 1);\n  --md-primary-fg-color--dark: hsla(225deg, 27%, 46%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=indigo],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=indigo] {\n  --md-primary-code-bg-color: #303446;\n  --md-primary-fg-color: hsla(225deg, 27%, 51%, 1);\n  --md-primary-fg-color--transparent: hsla(225deg, 27%, 51%, 0.1);\n  --md-primary-fg-color--light: hsla(225deg, 27%, 56%, 1);\n  --md-primary-fg-color--dark: hsla(225deg, 27%, 46%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=light-blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-blue] {\n  --md-primary-code-bg-color: #303446;\n  --md-primary-fg-color: hsla(225deg, 27%, 51%, 1);\n  --md-primary-fg-color--transparent: hsla(225deg, 27%, 51%, 0.1);\n  --md-primary-fg-color--light: hsla(225deg, 27%, 56%, 1);\n  --md-primary-fg-color--dark: hsla(225deg, 27%, 46%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=cyan],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=cyan] {\n  --md-primary-code-bg-color: #364653;\n  --md-primary-fg-color: hsla(191deg, 97%, 77%, 1);\n  --md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.1);\n  --md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);\n  --md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=teal],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=teal] {\n  --md-primary-code-bg-color: #364653;\n  --md-primary-fg-color: hsla(191deg, 97%, 77%, 1);\n  --md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.1);\n  --md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);\n  --md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=green] {\n  --md-primary-code-bg-color: #2d4840;\n  --md-primary-fg-color: hsla(135deg, 94%, 65%, 1);\n  --md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.1);\n  --md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);\n  --md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=light-green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-green] {\n  --md-primary-code-bg-color: #2d4840;\n  --md-primary-fg-color: hsla(135deg, 94%, 65%, 1);\n  --md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.1);\n  --md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);\n  --md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=lime],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=lime] {\n  --md-primary-code-bg-color: #2d4840;\n  --md-primary-fg-color: hsla(135deg, 94%, 65%, 1);\n  --md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.1);\n  --md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);\n  --md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=yellow],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=yellow] {\n  --md-primary-code-bg-color: #454842;\n  --md-primary-fg-color: hsla(65deg, 92%, 76%, 1);\n  --md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.1);\n  --md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);\n  --md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=amber],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=amber] {\n  --md-primary-code-bg-color: #454842;\n  --md-primary-fg-color: hsla(65deg, 92%, 76%, 1);\n  --md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.1);\n  --md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);\n  --md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=orange] {\n  --md-primary-code-bg-color: #473e3d;\n  --md-primary-fg-color: hsla(31deg, 100%, 71%, 1);\n  --md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.1);\n  --md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);\n  --md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-primary=deep-orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-orange] {\n  --md-primary-code-bg-color: #473e3d;\n  --md-primary-fg-color: hsla(31deg, 100%, 71%, 1);\n  --md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.1);\n  --md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);\n  --md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);\n  --md-primary-bg-color: var(--md-default-bg-color);\n  --md-primary-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=red],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=red] {\n  --md-code-link-accent-bg-color: #472c36;\n  --md-accent-fg-color: hsla(0deg, 100%, 62%, 1);\n  --md-accent-fg-color--transparent: hsla(0deg, 100%, 62%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=pink],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=pink] {\n  --md-code-link-accent-bg-color: #473149;\n  --md-accent-fg-color: hsla(326deg, 100%, 69%, 1);\n  --md-accent-fg-color--transparent: hsla(326deg, 100%, 69%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=purple] {\n  --md-code-link-accent-bg-color: #3c3652;\n  --md-accent-fg-color: hsla(265deg, 89%, 73%, 1);\n  --md-accent-fg-color--transparent: hsla(265deg, 89%, 73%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=deep-purple],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-purple] {\n  --md-code-link-accent-bg-color: #3c3652;\n  --md-accent-fg-color: hsla(265deg, 89%, 73%, 1);\n  --md-accent-fg-color--transparent: hsla(265deg, 89%, 73%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=blue] {\n  --md-code-link-accent-bg-color: #2e3243;\n  --md-accent-fg-color: hsla(225deg, 27%, 46%, 1);\n  --md-accent-fg-color--transparent: hsla(225deg, 27%, 46%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=indigo],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=indigo] {\n  --md-code-link-accent-bg-color: #2e3243;\n  --md-accent-fg-color: hsla(225deg, 27%, 46%, 1);\n  --md-accent-fg-color--transparent: hsla(225deg, 27%, 46%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=light-blue],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-blue] {\n  --md-code-link-accent-bg-color: #2e3243;\n  --md-accent-fg-color: hsla(225deg, 27%, 46%, 1);\n  --md-accent-fg-color--transparent: hsla(225deg, 27%, 46%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=cyan],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=cyan] {\n  --md-code-link-accent-bg-color: #324553;\n  --md-accent-fg-color: hsla(191deg, 97%, 72%, 1);\n  --md-accent-fg-color--transparent: hsla(191deg, 97%, 72%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=teal],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=teal] {\n  --md-code-link-accent-bg-color: #324553;\n  --md-accent-fg-color: hsla(191deg, 97%, 72%, 1);\n  --md-accent-fg-color--transparent: hsla(191deg, 97%, 72%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=green] {\n  --md-code-link-accent-bg-color: #2a483d;\n  --md-accent-fg-color: hsla(135deg, 94%, 60%, 1);\n  --md-accent-fg-color--transparent: hsla(135deg, 94%, 60%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=light-green],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=light-green] {\n  --md-code-link-accent-bg-color: #2a483d;\n  --md-accent-fg-color: hsla(135deg, 94%, 60%, 1);\n  --md-accent-fg-color--transparent: hsla(135deg, 94%, 60%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=lime],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=lime] {\n  --md-code-link-accent-bg-color: #2a483d;\n  --md-accent-fg-color: hsla(135deg, 94%, 60%, 1);\n  --md-accent-fg-color--transparent: hsla(135deg, 94%, 60%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=yellow],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=yellow] {\n  --md-code-link-accent-bg-color: #45483e;\n  --md-accent-fg-color: hsla(65deg, 92%, 71%, 1);\n  --md-accent-fg-color--transparent: hsla(65deg, 92%, 71%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=amber],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=amber] {\n  --md-code-link-accent-bg-color: #45483e;\n  --md-accent-fg-color: hsla(65deg, 92%, 71%, 1);\n  --md-accent-fg-color--transparent: hsla(65deg, 92%, 71%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=orange] {\n  --md-code-link-accent-bg-color: #473d39;\n  --md-accent-fg-color: hsla(31deg, 100%, 66%, 1);\n  --md-accent-fg-color--transparent: hsla(31deg, 100%, 66%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n[data-md-color-scheme=dracula][data-md-color-accent=deep-orange],\n[data-md-color-scheme=dracula] :not([data-md-color-scheme])[data-md-color-primary=deep-orange] {\n  --md-code-link-accent-bg-color: #473d39;\n  --md-accent-fg-color: hsla(31deg, 100%, 66%, 1);\n  --md-accent-fg-color--transparent: hsla(31deg, 100%, 66%, 0.1);\n  --md-accent-bg-color: var(--md-default-bg-color);\n  --md-accent-bg-color--light: var(--md-default-bg-color--light);\n}\n\n/* Normal colors */\n:root {\n  --md-heart: #ff5252;\n  --md-heart-big: #ff1744;\n  /* Dark mode colors */\n}\n:root :focus-visible {\n  outline-style: solid;\n}\n:root [data-md-color-scheme=dracula] {\n  --md-heart: hsl(326, 100%, 74%);\n  --md-heart-big: hsl(0, 100%, 67%);\n}\n\n.md-typeset h4 {\n  margin: 2em 0 1em;\n}\n.md-typeset a.source-link {\n  position: relative;\n  top: -0.6rem;\n  float: right;\n  color: var(--md-default-fg-color--lighter);\n  transition: color 125ms;\n}\n.md-typeset a.source-link:hover {\n  color: var(--md-accent-fg-color);\n}\n.md-typeset a.source-link .twemoji {\n  height: 1.2rem;\n}\n.md-typeset a.source-link .twemoji svg {\n  width: 1.2rem;\n  height: 1.2rem;\n}\n.md-typeset div.highlight.md-max-height pre > code {\n  max-height: 15rem;\n}\n\n.twemoji.heart-throb svg, .twemoji.heart-throb-hover svg {\n  position: relative;\n  color: var(--md-heart);\n  animation: pulse 1.5s ease infinite;\n}\n\n@keyframes pulse {\n  0% {\n    transform: scale(1);\n  }\n  40% {\n    color: var(--md-heart-big);\n    transform: scale(1.3);\n  }\n  50% {\n    transform: scale(1.2);\n  }\n  60% {\n    color: var(--md-heart-big);\n    transform: scale(1.3);\n  }\n  100% {\n    transform: scale(1);\n  }\n}\nfooter.sponsorship {\n  text-align: center;\n}\nfooter.sponsorship hr {\n  display: inline-block;\n  width: 1.6rem;\n  margin: 0 0.7rem;\n  vertical-align: middle;\n  border-bottom: 2px solid var(--md-default-fg-color--lighter);\n}\nfooter.sponsorship:hover hr {\n  border-color: var(--md-accent-fg-color);\n}\nfooter.sponsorship:not(:hover) .twemoji.heart-throb-hover svg {\n  color: var(--md-default-fg-color--lighter) !important;\n}\n\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=dracula] .md-icon .light-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=dracula] .md-icon .system-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=dracula] .md-icon .unknown-mode {\n  display: none;\n}\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=default] .md-icon .dark-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=default] .md-icon .system-mode,\nbody:not([data-md-prefers-color-scheme=true])[data-md-color-scheme=default] .md-icon .unknown-mode {\n  display: none;\n}\nbody:not([data-md-prefers-color-scheme=true]):not([data-md-color-scheme=default]):not([data-md-color-scheme=dracula]) .md-icon .dark-mode,\nbody:not([data-md-prefers-color-scheme=true]):not([data-md-color-scheme=default]):not([data-md-color-scheme=dracula]) .md-icon .light-mode,\nbody:not([data-md-prefers-color-scheme=true]):not([data-md-color-scheme=default]):not([data-md-color-scheme=dracula]) .md-icon .system-mode {\n  display: none;\n}\nbody[data-md-prefers-color-scheme=true] .md-icon .dark-mode,\nbody[data-md-prefers-color-scheme=true] .md-icon .light-mode,\nbody[data-md-prefers-color-scheme=true] .md-icon .unknown-mode {\n  display: none;\n}\n\n.md-header-nav__scheme {\n  z-index: 0;\n}\n\n@media screen and (max-width: 59.9375em) {\n  .md-header-nav__scheme {\n    padding-right: 0;\n  }\n  label[for=__search] {\n    padding-left: 0;\n  }\n}\n[data-md-toggle=search]:checked ~ .md-header .md-header-nav__scheme {\n  display: none;\n}\n\n.md-typeset .admonition, .md-typeset details {\n  border-width: 0;\n  border-left-width: 4px;\n}\n\n/* Style new admonitions with dark or light colors */\n:root > * {\n  --md-admonition-bg-color: transparent;\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-admonition-icon-color: $drac-dark-yellow;\n}\n:root > * {\n  --md-admonition-icon--settings: svg-load(\"@mdi/svg/svg/cog.svg\");\n  --md-admonition-bg-color--settings: rgba(170, 0, 255, 0.1);\n  --md-admonition-icon-color--settings: #aa00ff;\n  --md-admonition-shadow-color--settings: rgba(170, 0, 255, 0.1);\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-admonition-bg-color--settings: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--settings: hsl(326, 100%, 74%);\n  --md-admonition-shadow-color--settings: rgba(255, 122, 198, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--note: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--note: hsl(51, 94%, 73%);\n  --md-admonition-shadow-color--note: rgba(251, 231, 121, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--abstract: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--abstract: hsl(191, 97%, 77%);\n  --md-admonition-shadow-color--abstract: rgba(139, 232, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--info: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--info: hsl(190, 94%, 87%);\n  --md-admonition-shadow-color--info: rgba(191, 243, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--tip: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--tip: hsl(161, 97%, 77%);\n  --md-admonition-shadow-color--tip: rgba(139, 253, 217, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--success: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--success: hsl(135, 94%, 65%);\n  --md-admonition-shadow-color--success: rgba(82, 250, 124, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--question: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--question: hsl(135, 92%, 79%);\n  --md-admonition-shadow-color--question: rgba(152, 251, 177, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--warning: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--warning: hsl(31, 100%, 71%);\n  --md-admonition-shadow-color--warning: rgba(255, 184, 107, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--failure: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--failure: hsl(0, 100%, 59%);\n  --md-admonition-shadow-color--failure: rgba(255, 46, 46, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--danger: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--danger: hsl(0, 100%, 67%);\n  --md-admonition-shadow-color--danger: rgba(255, 87, 87, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--bug: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--bug: hsl(325, 100%, 64%);\n  --md-admonition-shadow-color--bug: rgba(255, 71, 179, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--example: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--example: hsl(265, 89%, 78%);\n  --md-admonition-shadow-color--example: rgba(191, 149, 249, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--quote: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--quote: hsl(225, 8%, 51%);\n  --md-admonition-shadow-color--quote: rgba(120, 125, 140, 0.1);\n}\n:root > * {\n  --md-admonition-icon--new: svg-load(\"@mdi/svg/svg/alert-decagram.svg\");\n  --md-admonition-bg-color--new: rgba(255, 214, 0, 0.1);\n  --md-admonition-icon-color--new: #ffd600;\n  --md-admonition-shadow-color--new: rgba(255, 214, 0, 0.1);\n}\n:root > *[data-md-color-scheme=dracula] {\n  --md-admonition-bg-color--new: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--new: hsl(65, 92%, 76%);\n  --md-admonition-shadow-color--new: rgba(241, 250, 137, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--note: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--note: hsl(51, 94%, 73%);\n  --md-admonition-shadow-color--note: rgba(251, 231, 121, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--abstract: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--abstract: hsl(191, 97%, 77%);\n  --md-admonition-shadow-color--abstract: rgba(139, 232, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--info: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--info: hsl(190, 94%, 87%);\n  --md-admonition-shadow-color--info: rgba(191, 243, 253, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--tip: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--tip: hsl(161, 97%, 77%);\n  --md-admonition-shadow-color--tip: rgba(139, 253, 217, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--success: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--success: hsl(135, 94%, 65%);\n  --md-admonition-shadow-color--success: rgba(82, 250, 124, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--question: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--question: hsl(135, 92%, 79%);\n  --md-admonition-shadow-color--question: rgba(152, 251, 177, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--warning: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--warning: hsl(31, 100%, 71%);\n  --md-admonition-shadow-color--warning: rgba(255, 184, 107, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--failure: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--failure: hsl(0, 100%, 59%);\n  --md-admonition-shadow-color--failure: rgba(255, 46, 46, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--danger: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--danger: hsl(0, 100%, 67%);\n  --md-admonition-shadow-color--danger: rgba(255, 87, 87, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--bug: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--bug: hsl(325, 100%, 64%);\n  --md-admonition-shadow-color--bug: rgba(255, 71, 179, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--example: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--example: hsl(265, 89%, 78%);\n  --md-admonition-shadow-color--example: rgba(191, 149, 249, 0.1);\n}\n:root > * {\n  --md-admonition-bg-color--quote: var(--md-default-bg-color--ultra-dark);\n  --md-admonition-icon-color--quote: hsl(225, 8%, 51%);\n  --md-admonition-shadow-color--quote: rgba(120, 125, 140, 0.1);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset .admonition, [data-md-color-scheme=dracula] .md-typeset details {\n  border-color: var(--md-admonition-icon-color--note);\n  box-shadow: var(--md-shadow-z2);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition:focus-within, [data-md-color-scheme=dracula] .md-typeset details:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details > summary {\n  background-color: var(--md-admonition-bg-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details > summary::before {\n  background-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details > summary::after {\n  color: var(--md-admonition-icon-color--note);\n}\n\n/* Style existing admonitions with dark mode colors */\n[data-md-color-scheme=dracula] .md-typeset .admonition.note, [data-md-color-scheme=dracula] .md-typeset details.note {\n  border-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note:focus-within, [data-md-color-scheme=dracula] .md-typeset details.note:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.note > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.note > summary {\n  background-color: var(--md-admonition-bg-color--note);\n  border-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.note > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.note > summary::before {\n  background-color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.note > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.note > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.note > summary::after {\n  color: var(--md-admonition-icon-color--note);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract, [data-md-color-scheme=dracula] .md-typeset details.abstract {\n  border-color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract:focus-within, [data-md-color-scheme=dracula] .md-typeset details.abstract:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.abstract > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.abstract > summary {\n  background-color: var(--md-admonition-bg-color--abstract);\n  border-color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.abstract > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.abstract > summary::before {\n  background-color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.abstract > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.abstract > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.abstract > summary::after {\n  color: var(--md-admonition-icon-color--abstract);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info, [data-md-color-scheme=dracula] .md-typeset details.info {\n  border-color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info:focus-within, [data-md-color-scheme=dracula] .md-typeset details.info:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.info > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.info > summary {\n  background-color: var(--md-admonition-bg-color--info);\n  border-color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.info > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.info > summary::before {\n  background-color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.info > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.info > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.info > summary::after {\n  color: var(--md-admonition-icon-color--info);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip, [data-md-color-scheme=dracula] .md-typeset details.tip {\n  border-color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip:focus-within, [data-md-color-scheme=dracula] .md-typeset details.tip:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.tip > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.tip > summary {\n  background-color: var(--md-admonition-bg-color--tip);\n  border-color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.tip > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.tip > summary::before {\n  background-color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.tip > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.tip > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.tip > summary::after {\n  color: var(--md-admonition-icon-color--tip);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success, [data-md-color-scheme=dracula] .md-typeset details.success {\n  border-color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success:focus-within, [data-md-color-scheme=dracula] .md-typeset details.success:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.success > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.success > summary {\n  background-color: var(--md-admonition-bg-color--success);\n  border-color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.success > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.success > summary::before {\n  background-color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.success > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.success > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.success > summary::after {\n  color: var(--md-admonition-icon-color--success);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question, [data-md-color-scheme=dracula] .md-typeset details.question {\n  border-color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question:focus-within, [data-md-color-scheme=dracula] .md-typeset details.question:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.question > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.question > summary {\n  background-color: var(--md-admonition-bg-color--question);\n  border-color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.question > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.question > summary::before {\n  background-color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.question > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.question > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.question > summary::after {\n  color: var(--md-admonition-icon-color--question);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning, [data-md-color-scheme=dracula] .md-typeset details.warning {\n  border-color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning:focus-within, [data-md-color-scheme=dracula] .md-typeset details.warning:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.warning > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.warning > summary {\n  background-color: var(--md-admonition-bg-color--warning);\n  border-color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.warning > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.warning > summary::before {\n  background-color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.warning > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.warning > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.warning > summary::after {\n  color: var(--md-admonition-icon-color--warning);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure, [data-md-color-scheme=dracula] .md-typeset details.failure {\n  border-color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure:focus-within, [data-md-color-scheme=dracula] .md-typeset details.failure:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.failure > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.failure > summary {\n  background-color: var(--md-admonition-bg-color--failure);\n  border-color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.failure > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.failure > summary::before {\n  background-color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.failure > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.failure > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.failure > summary::after {\n  color: var(--md-admonition-icon-color--failure);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger, [data-md-color-scheme=dracula] .md-typeset details.danger {\n  border-color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger:focus-within, [data-md-color-scheme=dracula] .md-typeset details.danger:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.danger > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.danger > summary {\n  background-color: var(--md-admonition-bg-color--danger);\n  border-color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.danger > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.danger > summary::before {\n  background-color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.danger > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.danger > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.danger > summary::after {\n  color: var(--md-admonition-icon-color--danger);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug, [data-md-color-scheme=dracula] .md-typeset details.bug {\n  border-color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug:focus-within, [data-md-color-scheme=dracula] .md-typeset details.bug:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.bug > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.bug > summary {\n  background-color: var(--md-admonition-bg-color--bug);\n  border-color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.bug > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.bug > summary::before {\n  background-color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.bug > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.bug > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.bug > summary::after {\n  color: var(--md-admonition-icon-color--bug);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example, [data-md-color-scheme=dracula] .md-typeset details.example {\n  border-color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example:focus-within, [data-md-color-scheme=dracula] .md-typeset details.example:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.example > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.example > summary {\n  background-color: var(--md-admonition-bg-color--example);\n  border-color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.example > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.example > summary::before {\n  background-color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.example > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.example > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.example > summary::after {\n  color: var(--md-admonition-icon-color--example);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote, [data-md-color-scheme=dracula] .md-typeset details.quote {\n  border-color: var(--md-admonition-icon-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote:focus-within, [data-md-color-scheme=dracula] .md-typeset details.quote:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.quote > .admonition-title, [data-md-color-scheme=dracula] .md-typeset details.quote > summary {\n  background-color: var(--md-admonition-bg-color--quote);\n  border-color: var(--md-admonition-icon-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.quote > .admonition-title::before, [data-md-color-scheme=dracula] .md-typeset details.quote > summary::before {\n  background-color: var(--md-admonition-icon-color--quote);\n}\n[data-md-color-scheme=dracula] .md-typeset .admonition.quote > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.quote > .admonition-title::after, [data-md-color-scheme=dracula] .md-typeset details.quote > summary::after {\n  color: var(--md-admonition-icon-color--quote);\n}\n\n.md-typeset .admonition.settings, .md-typeset details.settings, .md-typeset .admonition.config, .md-typeset details.config {\n  border-color: var(--md-admonition-icon-color--settings);\n}\n.md-typeset .admonition.settings:focus-within, .md-typeset details.settings:focus-within, .md-typeset .admonition.config:focus-within, .md-typeset details.config:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--settings);\n}\n.md-typeset .admonition.settings > .admonition-title, .md-typeset details.settings > .admonition-title, .md-typeset details.settings > summary, .md-typeset .admonition.config > .admonition-title, .md-typeset details.config > .admonition-title, .md-typeset details.config > summary {\n  background-color: var(--md-admonition-bg-color--settings);\n  border-color: var(--md-admonition-icon-color--settings);\n}\n.md-typeset .admonition.settings > .admonition-title::before, .md-typeset details.settings > .admonition-title::before, .md-typeset details.settings > summary::before, .md-typeset .admonition.config > .admonition-title::before, .md-typeset details.config > .admonition-title::before, .md-typeset details.config > summary::before {\n  width: 1rem;\n  height: 1rem;\n  background-color: var(--md-admonition-icon-color--settings);\n  background-size: 1rem;\n  mask-image: var(--md-admonition-icon--settings);\n  content: \" \";\n}\n.md-typeset .admonition.settings > .admonition-title::after, .md-typeset details.settings > .admonition-title::after, .md-typeset details.settings > summary::after, .md-typeset .admonition.config > .admonition-title::after, .md-typeset details.config > .admonition-title::after, .md-typeset details.config > summary::after {\n  color: var(--md-admonition-icon-color--settings);\n}\n\n.md-typeset .admonition.new, .md-typeset details.new {\n  border-color: var(--md-admonition-icon-color--new);\n}\n.md-typeset .admonition.new:focus-within, .md-typeset details.new:focus-within {\n  box-shadow: 0 0 0 0.2rem var(--md-admonition-shadow-color--new);\n}\n.md-typeset .admonition.new > .admonition-title, .md-typeset details.new > .admonition-title, .md-typeset details.new > summary {\n  background-color: var(--md-admonition-bg-color--new);\n  border-color: var(--md-admonition-icon-color--new);\n}\n.md-typeset .admonition.new > .admonition-title::before, .md-typeset details.new > .admonition-title::before, .md-typeset details.new > summary::before {\n  width: 1rem;\n  height: 1rem;\n  background-color: var(--md-admonition-icon-color--new);\n  background-size: 1rem;\n  mask-image: var(--md-admonition-icon--new);\n  content: \" \";\n}\n.md-typeset .admonition.new > .admonition-title::after, .md-typeset details.new > .admonition-title::after, .md-typeset details.new > summary::after {\n  color: var(--md-admonition-icon-color--new);\n}\n\nmjx-container[display=true] {\n  font-size: 120% !important;\n}\n\nmjx-container:not([display]) {\n  font-size: 100% !important;\n}\n\n[data-md-color-scheme=slate],\n[data-md-color-scheme=dracula] {\n  /* stylelint-disable selector-class-pattern */\n  /* stylelint-enable selector-class-pattern */\n}\n[data-md-color-scheme=slate] .CtxtMenu_InfoSignature input,\n[data-md-color-scheme=slate] .CtxtMenu_InfoContent pre,\n[data-md-color-scheme=dracula] .CtxtMenu_InfoSignature input,\n[data-md-color-scheme=dracula] .CtxtMenu_InfoContent pre {\n  color: rgb(0, 0, 0);\n}\n[data-md-color-scheme=slate] .CtxtMenu_Info,\n[data-md-color-scheme=slate] .CtxtMenu_Menu,\n[data-md-color-scheme=dracula] .CtxtMenu_Info,\n[data-md-color-scheme=dracula] .CtxtMenu_Menu {\n  box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.5);\n}\n\n.md-typeset .arithmatex {\n  overflow-x: auto !important;\n  overflow-y: hidden !important;\n}\n\n.katex-display .katex-html {\n  display: flex !important;\n  flex-direction: row;\n  flex-wrap: nowrap;\n  align-items: baseline;\n  justify-content: space-between;\n}\n.katex-display .katex-html .base {\n  display: inline !important;\n}\n.katex-display .katex-html .tag {\n  position: relative !important;\n  display: inline !important;\n  margin-left: var(--margin-small);\n}\n\n/* Don't use box shadows */\n.md-typeset del.critic,\n.md-typeset ins.critic,\n.md-typeset mark.critic {\n  padding: 0 0.25em;\n  color: unset;\n  box-shadow: none;\n}\n.md-typeset .critic.break {\n  margin: 0;\n}\n\n/* Inherit admonition style */\n.md-typeset details {\n  overflow: hidden;\n}\n.md-typeset details > summary:focus {\n  outline-style: none;\n}\n\n.highlight .kc {\n  color: var(--md-code-hl-constant-color);\n}\n.highlight .nc,\n.highlight .ne {\n  color: var(--md-code-hl-class-color);\n}\n.highlight .mb {\n  color: var(--md-code-hl-number-color);\n}\n.highlight .nb,\n.highlight .bp {\n  color: var(--md-code-hl-builtin-color);\n}\n.highlight .nn {\n  color: var(--md-code-hl-namespace-color);\n}\n.highlight .na,\n.highlight .nd,\n.highlight .ni {\n  color: var(--md-code-hl-entity-color);\n}\n.highlight .nl,\n.highlight .nt {\n  color: var(--md-code-hl-tag-color);\n}\n\n.md-typeset {\n  /* Allow code to look like code everywhere despite Material's current preference */\n  /* Code that is also a link */\n  /* Don't always like code breaking in table cells */\n  /* Special line number coloring for tables */\n}\n.md-typeset *:not(pre) > code {\n  margin: 0;\n  padding: 0 0.2941176471em;\n  color: var(--md-code-fg-color);\n  background-color: var(--md-code-inline-bg-color);\n  border-radius: 0.1rem;\n  box-shadow: none;\n}\n.md-typeset a > code {\n  color: inherit !important;\n  background-color: var(--md-code-link-bg-color) !important;\n  transition: color 125ms;\n  transition: background-color 125ms;\n  /* If we are linking highlighted, inline code, force it to just look like a code link */\n}\n.md-typeset a > code * {\n  color: var(--md-typeset-a-color) !important;\n}\n.md-typeset a > code:hover {\n  background-color: var(--md-code-link-accent-bg-color) !important;\n}\n.md-typeset a > code:hover * {\n  color: var(--md-accent-fg-color) !important;\n}\n.md-typeset pre > code {\n  outline: none;\n}\n.md-typeset td code {\n  word-break: normal;\n}\n.md-typeset .highlight {\n  /* Needed for tab preserving mode */\n  tab-size: 8;\n  /* `pymdownx-inline` mode */\n}\n.md-typeset .highlight + .result {\n  border-width: 0.1rem;\n}\n.md-typeset .highlight [data-linenos] {\n  /* Special line mode coloring */\n}\n.md-typeset .highlight [data-linenos].special::before {\n  background-color: var(--md-code-special-bg-color);\n}\n.md-typeset .highlighttable .linenodiv .special {\n  margin-right: -0.5882352941em;\n  margin-left: -1.1764705882em;\n  padding-right: 0.5882352941em;\n  padding-left: 1.1764705882em;\n  background-color: var(--md-code-special-bg-color);\n}\n.md-typeset .highlight span.filename {\n  position: relative;\n  display: block;\n  margin-top: 1em;\n  padding: 0.5em 1.1764705882em 0.5em 2.9411764706em;\n  font-weight: 700;\n  font-size: 0.68rem;\n  background-color: var(--md-code-title-bg-color);\n  border-top-left-radius: 0.1rem;\n  border-top-right-radius: 0.1rem;\n}\n.md-typeset .highlight span.filename + pre {\n  margin-top: 0;\n}\n.md-typeset .highlight span.filename + pre code {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.md-typeset .highlight span.filename::before {\n  position: absolute;\n  left: 0.8823529412em;\n  width: 1.4705882353em;\n  height: 1.4705882353em;\n  background-color: var(--md-default-fg-color);\n  mask-image: svg-load(\"@mdi/svg/svg/console.svg\");\n  mask-repeat: no-repeat;\n  mask-size: contain;\n  content: \"\";\n}\n.md-typeset .collapse-code {\n  position: relative;\n  margin-top: 1em;\n  margin-bottom: 1em;\n}\n.md-typeset .collapse-code pre {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.md-typeset .collapse-code input {\n  display: none;\n}\n.md-typeset .collapse-code input ~ .code-footer {\n  width: 100%;\n  margin: 0;\n  padding: 0.25em 0.5em 0.25em 0em;\n}\n.md-typeset .collapse-code input ~ .code-footer label {\n  position: relative;\n  margin: 0.05em;\n  padding: 0.15em 0.8em;\n  color: var(--md-primary-bg-color);\n  font-size: 90%;\n  background-color: var(--md-primary-fg-color);\n  mask-repeat: no-repeat;\n  mask-size: contain;\n  border-radius: 0.1rem;\n  cursor: pointer;\n  content: \"\";\n}\n.md-typeset .collapse-code input ~ .code-footer label:hover {\n  background-color: var(--md-accent-fg-color);\n}\n.md-typeset .collapse-code input ~ .code-footer label::before {\n  position: absolute;\n  top: 0.15em;\n  left: 0.15em;\n  display: block;\n  box-sizing: border-box;\n  width: 1.25em;\n  height: 1.25em;\n  background-color: var(--md-primary-bg-color);\n  background-size: 1.25em;\n  content: \"\";\n}\n.md-typeset .collapse-code input ~ .code-footer label.expand {\n  display: none;\n}\n.md-typeset .collapse-code input ~ .code-footer label.expand::before {\n  mask-image: svg-load(\"@mdi/svg/svg/arrow-expand.svg\");\n}\n.md-typeset .collapse-code input ~ .code-footer label.collapse::before {\n  mask-image: svg-load(\"@mdi/svg/svg/arrow-collapse.svg\");\n}\n.md-typeset .collapse-code input:checked ~ .code-footer label.expand {\n  display: inline;\n}\n.md-typeset .collapse-code input:checked ~ .code-footer label.collapse {\n  display: none;\n}\n.md-typeset .collapse-code input:checked + div.highlight code {\n  max-height: 9.375em;\n  overflow: hidden;\n}\n.md-typeset .collapse-code input:checked ~ .code-footer {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  padding: 2em 0.5em 0.5em 0.8rem;\n  background-image: linear-gradient(to bottom, transparent, var(--md-default-bg-color) 80% 100%);\n}\n@media screen and (max-width: 44.9375em) {\n  .md-typeset > diagram-div {\n    margin-right: -0.8rem;\n    margin-left: -0.8rem;\n  }\n  .md-typeset > .collapse-code {\n    margin-right: -0.8rem;\n    margin-left: -0.8rem;\n  }\n  .md-typeset > .collapse-code label.collapse {\n    left: 0.8rem;\n  }\n}\n\n.md-typeset .keys .key-power::before {\n  padding-right: 0.4em;\n  content: \"⏻\";\n}\n.md-typeset .keys .key-fingerprint::before {\n  padding-right: 0.4em;\n  content: \"☝\";\n}\n\n:root > * {\n  --magiclink-email-icon: svg-load(\"@mdi/svg/svg/mail.svg\");\n  --magiclink-github-icon: svg-load(\"@mdi/svg/svg/github.svg\");\n  --magiclink-bitbucket-icon: svg-load(\"@mdi/svg/svg/bitbucket.svg\");\n  --magiclink-gitlab-icon: svg-load(\"@mdi/svg/svg/gitlab.svg\");\n  --magiclink-commit-icon: svg-load(\"@primer/octicons/build/svg/git-commit-24.svg\");\n  --magiclink-compare-icon: svg-load(\"@primer/octicons/build/svg/file-diff-24.svg\");\n  --magiclink-pull-icon: svg-load(\"@primer/octicons/build/svg/git-pull-request-24.svg\");\n  --magiclink-issue-icon: svg-load(\"@primer/octicons/build/svg/issue-opened-24.svg\");\n  --magiclink-discussion-icon: svg-load(\"@primer/octicons/build/svg/comment-discussion-24.svg\");\n}\n\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-email-icon);\n}\n.md-typeset .magiclink-repository:not(.magiclink-ignore),\n.md-typeset .magiclink-compare:not(.magiclink-ignore),\n.md-typeset .magiclink-commit:not(.magiclink-ignore),\n.md-typeset .magiclink-pull:not(.magiclink-ignore),\n.md-typeset .magiclink-issue:not(.magiclink-ignore),\n.md-typeset .magiclink-discussion:not(.magiclink-ignore),\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore) {\n  position: relative;\n  padding-left: 1.375em;\n}\n.md-typeset .magiclink-repository:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-compare:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-commit:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-pull:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-issue:not(.magiclink-ignore)::before,\n.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before,\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  box-sizing: border-box;\n  width: 1.25em;\n  height: 1.25em;\n  background-color: var(--md-typeset-a-color);\n  background-size: 1.25em;\n  transition: background-color 125ms;\n  mask-repeat: no-repeat;\n  mask-size: contain;\n  content: \"\";\n}\n.md-typeset .magiclink-repository:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-compare:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-commit:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-pull:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-issue:not(.magiclink-ignore):hover::before,\n.md-typeset .magiclink-discussion:not(.magiclink-ignore):hover::before,\n.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore):hover::before {\n  background-color: var(--md-accent-fg-color);\n}\n\n.md-typeset .magiclink-commit:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-commit-icon);\n}\n\n.md-typeset .magiclink-compare:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-compare-icon);\n}\n\n.md-typeset .magiclink-pull:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-pull-icon);\n}\n\n.md-typeset .magiclink-issue:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-issue-icon);\n}\n\n.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-discussion-icon);\n}\n\n.md-typeset .magiclink-repository.magiclink-github:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-github-icon);\n}\n\n.md-typeset .magiclink-repository.magiclink-gitlab:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-gitlab-icon);\n}\n\n.md-typeset .magiclink-repository.magiclink-bitbucket:not(.magiclink-ignore)::before {\n  mask-image: var(--magiclink-bitbucket-icon);\n}\n\n/* Shadow boxes sometimes give issues, so just pad. */\n.md-typeset mark:not(.critic) {\n  box-shadow: none;\n}\n\n.md-typeset {\n  /* Progress Bars */\n  /* Stripe animation */\n}\n.md-typeset .progress-label {\n  position: absolute;\n  width: 100%;\n  margin: 0;\n  color: var(--md-text-color);\n  font-weight: 700;\n  line-height: 1.4rem;\n  white-space: nowrap;\n  text-align: center;\n  text-shadow: -0.0625em -0.0625em 0.375em var(--md-default-bg-color--light), 0.0625em -0.0625em 0.375em var(--md-default-bg-color--light), -0.0625em 0.0625em 0.375em var(--md-default-bg-color--light), 0.0625em 0.0625em 0.375em var(--md-default-bg-color--light);\n}\n.md-typeset .progress-bar {\n  float: left;\n  height: 1.2rem;\n  background-color: #2979ff;\n}\n.md-typeset .candystripe-animate .progress-bar {\n  animation: animate-stripes 3s linear infinite;\n}\n.md-typeset .progress {\n  position: relative;\n  display: block;\n  width: 100%;\n  height: 1.2rem;\n  margin: 0.5rem 0;\n  background-color: var(--md-default-fg-color--lightest);\n}\n.md-typeset .progress.thin {\n  height: 0.4rem;\n  margin-top: 0.9rem;\n}\n.md-typeset .progress.thin .progress-label {\n  margin-top: -0.4rem;\n}\n.md-typeset .progress.thin .progress-bar {\n  height: 0.4rem;\n}\n.md-typeset .progress.candystripe .progress-bar {\n  background-image: linear-gradient(135deg, var(--md-progress-stripe) 27%, transparent 27%, transparent 52%, var(--md-progress-stripe) 52%, var(--md-progress-stripe) 77%, transparent 77%, transparent);\n  background-size: 2rem 2rem;\n}\n.md-typeset .progress-100plus .progress-bar {\n  background-color: var(--md-progress-100);\n}\n.md-typeset .progress-80plus .progress-bar {\n  background-color: var(--md-progress-80);\n}\n.md-typeset .progress-60plus .progress-bar {\n  background-color: var(--md-progress-60);\n}\n.md-typeset .progress-40plus .progress-bar {\n  background-color: var(--md-progress-40);\n}\n.md-typeset .progress-20plus .progress-bar {\n  background-color: var(--md-progress-20);\n}\n.md-typeset .progress-0plus .progress-bar {\n  background-color: var(--md-progress-0);\n}\n@keyframes animate-stripes {\n  0% {\n    background-position: 0 0;\n  }\n  100% {\n    background-position: 6rem 0;\n  }\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset .tabbed-set > .tabbed-labels {\n  box-shadow: 0 -0.05rem var(--md-default-fg-color--lighter) inset;\n}\n\n/* Style code blocks to fill full tab,\n   but otherwise, pad content. */\n.md-typeset .tabbed-alternate.tabbed-set .tabbed-control {\n  width: 2rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set .tabbed-control[hidden] {\n  width: 1.2rem;\n  opacity: 0;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block {\n  padding: 0 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > pre:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilite:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilitetable:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlight:only-child,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlighttable:only-child {\n  margin-right: -1.2rem;\n  margin-left: -1.2rem;\n  padding-right: 0.6rem;\n  padding-left: 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > pre:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilite:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .codehilitetable:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlight:only-child span.filename,\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .highlighttable:only-child span.filename {\n  margin-top: 0;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .collapse-code:only-child {\n  margin-top: 0;\n  margin-right: -1.2rem;\n  margin-left: -1.2rem;\n  padding-right: 0.6rem;\n  padding-left: 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > .collapse-code:only-child > .code-footer {\n  left: 0.6rem;\n}\n.md-typeset .tabbed-alternate.tabbed-set > .tabbed-content > .tabbed-block > diagram-div:only-child {\n  margin-right: -1.2rem;\n  margin-left: -1.2rem;\n  padding-right: 0.6rem;\n  padding-left: 0.6rem;\n}\n\n.js .md-typeset .tabbed-labels::before {\n  background-color: var(--md-accent-fg-color);\n}\n\n/* Ignore mobile overflow styling that extends the tab bar */\n@media screen and (max-width: 44.9375em) {\n  [dir=ltr] .md-content__inner > .tabbed-set .tabbed-labels {\n    padding-left: 0;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels {\n    max-width: 100%;\n    margin: 0;\n    padding-inline-start: 0;\n    scroll-padding-inline-start: 0;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels::after {\n    padding-inline-end: 0;\n    content: none;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels ~ .tabbed-control--prev {\n    margin-inline-start: 0;\n    padding-inline-start: 0;\n  }\n  .md-content__inner > .tabbed-set .tabbed-labels ~ .tabbed-control--next {\n    margin-inline-end: 0;\n    padding-inline-end: 0;\n  }\n}\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) {\n  box-shadow: var(--md-shadow-z2);\n}\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) tr:hover {\n  background-color: rgba(0, 0, 0, 0.08);\n}\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) th {\n  color: var(--md-text-color);\n  background-color: var(--md-default-bg-color--ultra-dark);\n  border-bottom: 0.05rem solid var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-typeset table:not([class]) td {\n  border-top: 0.05rem solid var(--md-default-fg-color--lighter);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] .md-typeset .task-list-control .task-list-indicator::before {\n  background-color: var(--md-default-fg-color--lighter);\n}\n[data-md-color-scheme=dracula] .md-typeset .task-list-control [type=checkbox]:checked + .task-list-indicator::before {\n  background-color: hsl(135, 94%, 65%);\n}\n\n.md-typeset .headerlink {\n  width: 1em;\n  height: 1em;\n  vertical-align: middle;\n  background-color: var(--md-default-fg-color--lighter);\n  background-size: 1em;\n  mask-size: 1em;\n  mask-repeat: no-repeat;\n  visibility: visible;\n  mask-image: svg-load(\"@mdi/svg/svg/link.svg\");\n}\n.md-typeset .headerlink:hover,\n.md-typeset [id]:target .headerlink {\n  background-color: var(--md-accent-fg-color);\n}\n\n/* Special handling of Mermaid content. */\ndiagram-div {\n  overflow: auto;\n}\n\nhtml {\n  background-color: transparent;\n}\n\n[data-md-component=announce] .twemoji {\n  color: var(--md-primary-fg-color);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=dracula] {\n  --md-text-color: var(--md-default-fg-color);\n  background-color: var(--md-default-bg-color);\n  --md-footer-bg-color: transparent;\n  --md-footer-bg-color--dark: var(--md-default-bg-color--darkest);\n  --md-header-fg-color: var(--md-text-color);\n  --md-header-bg-color: var(--md-default-bg-color--darkest);\n}\n[data-md-color-scheme=dracula] .md-header {\n  color: var(--md-text-color);\n  background-color: var(--md-header-bg-color);\n  border-bottom: 0.05rem solid var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-header[data-md-state=shadow] {\n  box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.15), 0 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2);\n}\n[data-md-color-scheme=dracula] .md-top {\n  background-color: var(--md-default-bg-color--dark);\n}\n[data-md-color-scheme=dracula] .md-top:hover {\n  background-color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-tabs {\n  color: var(--md-text-color);\n  background-color: var(--md-primary-fg-color--transparent);\n}\n[data-md-color-scheme=dracula] .md-tabs__link--active {\n  color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-tabs__link:hover {\n  color: var(--md-accent-fg-color);\n}\n[data-md-color-scheme=dracula] .md-hero {\n  color: var(--md-text-color);\n  background-color: var(--md-primary-fg-color--transparent);\n}\n[data-md-color-scheme=dracula] .md-nav__source {\n  color: var(--md-text-color);\n}\n[data-md-color-scheme=dracula] .md-nav__link[data-md-state=blur] {\n  color: var(--md-default-fg-color--light);\n}\n[data-md-color-scheme=dracula] .md-nav__item .md-nav__link--active {\n  color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-nav__link:focus, [data-md-color-scheme=dracula] .md-nav__link:hover {\n  color: var(--md-accent-fg-color);\n}\n@media screen and (max-width: 76.1875em) {\n  [data-md-color-scheme=dracula] .md-nav--primary .md-nav__item--active > .md-nav__link:not(:hover) {\n    color: var(--md-primary-fg-color);\n  }\n  [data-md-color-scheme=dracula] .md-nav--primary .md-nav__title {\n    color: var(--md-text-color);\n    background-color: var(--md-header-bg-color);\n    border-bottom: 0.05rem solid var(--md-primary-fg-color);\n  }\n}\n@media screen and (max-width: 59.9375em) {\n  [data-md-color-scheme=dracula] .md-nav__source {\n    color: var(--md-text-color);\n    background-color: var(--md-primary-fg-color--transparent);\n  }\n  [data-md-color-scheme=dracula] .md-nav .md-nav__title {\n    color: var(--md-text-color);\n    background-color: var(--md-header-bg-color);\n    border-bottom: 0.05rem solid var(--md-primary-fg-color);\n  }\n}\n[data-md-color-scheme=dracula] .md-search__input {\n  color: var(--md-text-color);\n  background-color: var(--md-accent-bg-color--light);\n}\n[data-md-color-scheme=dracula] .md-search__input:hover {\n  background-color: var(--md-default-bg-color--light);\n}\n[data-md-color-scheme=dracula] .md-search__input ~ .md-search__icon {\n  color: var(--md-text-color);\n}\n[data-md-color-scheme=dracula] .md-search__input::placeholder {\n  color: var(--md-default-fg-color--light);\n}\n[data-md-color-scheme=dracula] [data-md-toggle=search]:checked ~ .md-header .md-search__input {\n  background-color: transparent;\n}\n[data-md-color-scheme=dracula] .md-search__suggest {\n  color: var(--md-default-autocomplete-fg-color);\n}\n[data-md-color-scheme=dracula] .md-search__overlay, [data-md-color-scheme=dracula] .md-overlay {\n  background-color: var(--md-default-bg-color--light);\n}\n[data-md-color-scheme=dracula] .md-footer-nav__direction {\n  color: var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] .md-footer-meta {\n  border-top: 0.05rem solid var(--md-primary-fg-color);\n}\n[data-md-color-scheme=dracula] [data-md-component=announce] {\n  background-color: var(--md-default-bg-color--ultra-dark);\n}\n\n.md-typeset {\n  /* Don't force capitalization of `H5` elements. */\n}\n.md-typeset h5 {\n  color: var(--md-text-color);\n  text-transform: none;\n}\n\n.md-typeset__scrollwrap,\n.md-sidebar__scrollwrap,\n.md-search__scrollwrap,\n.md-typeset pre > code,\n.md-typeset div.mermaid,\n.md-typeset div.diagram,\n.md-typeset mermaid-div,\n.md-typeset diagram-div,\n.md-typeset pre.arithmatex,\n.md-typeset div.arithmatex {\n  scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n  scrollbar-width: thin;\n}\n.md-typeset__scrollwrap:hover,\n.md-sidebar__scrollwrap:hover,\n.md-search__scrollwrap:hover,\n.md-typeset pre > code:hover,\n.md-typeset div.mermaid:hover,\n.md-typeset div.diagram:hover,\n.md-typeset mermaid-div:hover,\n.md-typeset diagram-div:hover,\n.md-typeset pre.arithmatex:hover,\n.md-typeset div.arithmatex:hover {\n  scrollbar-color: var(--md-accent-fg-color) transparent;\n}\n.md-typeset__scrollwrap::-webkit-scrollbar,\n.md-sidebar__scrollwrap::-webkit-scrollbar,\n.md-search__scrollwrap::-webkit-scrollbar,\n.md-typeset pre > code::-webkit-scrollbar,\n.md-typeset div.mermaid::-webkit-scrollbar,\n.md-typeset div.diagram::-webkit-scrollbar,\n.md-typeset mermaid-div::-webkit-scrollbar,\n.md-typeset diagram-div::-webkit-scrollbar,\n.md-typeset pre.arithmatex::-webkit-scrollbar,\n.md-typeset div.arithmatex::-webkit-scrollbar {\n  width: 0.2rem;\n  height: 0.2rem;\n}\n.md-typeset__scrollwrap::-webkit-scrollbar-corner,\n.md-sidebar__scrollwrap::-webkit-scrollbar-corner,\n.md-search__scrollwrap::-webkit-scrollbar-corner,\n.md-typeset pre > code::-webkit-scrollbar-corner,\n.md-typeset div.mermaid::-webkit-scrollbar-corner,\n.md-typeset div.diagram::-webkit-scrollbar-corner,\n.md-typeset mermaid-div::-webkit-scrollbar-corner,\n.md-typeset diagram-div::-webkit-scrollbar-corner,\n.md-typeset pre.arithmatex::-webkit-scrollbar-corner,\n.md-typeset div.arithmatex::-webkit-scrollbar-corner {\n  background-color: transparent;\n}\n.md-typeset__scrollwrap::-webkit-scrollbar-thumb,\n.md-sidebar__scrollwrap::-webkit-scrollbar-thumb,\n.md-search__scrollwrap::-webkit-scrollbar-thumb,\n.md-typeset pre > code::-webkit-scrollbar-thumb,\n.md-typeset div.mermaid::-webkit-scrollbar-thumb,\n.md-typeset div.diagram::-webkit-scrollbar-thumb,\n.md-typeset mermaid-div::-webkit-scrollbar-thumb,\n.md-typeset diagram-div::-webkit-scrollbar-thumb,\n.md-typeset pre.arithmatex::-webkit-scrollbar-thumb,\n.md-typeset div.arithmatex::-webkit-scrollbar-thumb {\n  background-color: var(--md-default-fg-color--lighter);\n}\n.md-typeset__scrollwrap::-webkit-scrollbar-thumb:hover,\n.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover,\n.md-search__scrollwrap::-webkit-scrollbar-thumb:hover,\n.md-typeset pre > code::-webkit-scrollbar-thumb:hover,\n.md-typeset div.mermaid::-webkit-scrollbar-thumb:hover,\n.md-typeset div.diagram::-webkit-scrollbar-thumb:hover,\n.md-typeset mermaid-div::-webkit-scrollbar-thumb:hover,\n.md-typeset diagram-div::-webkit-scrollbar-thumb:hover,\n.md-typeset pre.arithmatex::-webkit-scrollbar-thumb:hover,\n.md-typeset div.arithmatex::-webkit-scrollbar-thumb:hover {\n  background-color: var(--md-accent-fg-color);\n}","/* Normal colors */\n:root {\n  --md-heart: #{$clr-red-a200};\n  --md-heart-big: #{$clr-red-a400};\n\n  :focus-visible {\n    outline-style: solid;\n  }\n\n  /* Dark mode colors */\n  [data-md-color-scheme=\"dracula\"] {\n    --md-heart: #{$drac-pink};\n    --md-heart-big: #{$drac-red};\n  }\n}\n\n.md-typeset {\n\n    h4 {\n      margin: 2.0em 0 1em;\n    }\n\n    a.source-link {\n        position: relative;\n        top: px2rem(-12px);\n        float: right;\n        color: var(--md-default-fg-color--lighter);\n        transition: color 125ms;\n\n        &:hover {\n          color: var(--md-accent-fg-color);\n        }\n\n        .twemoji {\n            height: px2rem(24px);\n\n            svg {\n                width: px2rem(24px);\n                height: px2rem(24px);\n            }\n        }\n    }\n\n    div.highlight.md-max-height pre > code {\n      max-height: px2rem(300px);\n    }\n}\n\n.twemoji {\n  &.heart-throb, &.heart-throb-hover {\n    svg {\n      position: relative;\n      color: var(--md-heart);\n      animation: pulse 1.5s ease infinite;\n    }\n  }\n}\n\n@keyframes pulse {\n  0% { transform: scale(1); }\n  40% { color: var(--md-heart-big); transform: scale(1.3); }\n  50% { transform: scale(1.2); }\n  60% { color: var(--md-heart-big); transform: scale(1.3); }\n  100% { transform: scale(1); }\n}\n\nfooter.sponsorship {\n  text-align: center;\n\n  hr {\n    display: inline-block;\n    width: px2rem(32px);\n    margin: 0 px2rem(14px);\n    vertical-align: middle;\n    border-bottom: 2px solid var(--md-default-fg-color--lighter);\n  }\n\n  &:hover {\n    hr {\n        border-color: var(--md-accent-fg-color);\n    }\n  }\n\n  &:not(:hover) {\n    .twemoji.heart-throb-hover svg{\n        color: var(--md-default-fg-color--lighter) !important;\n    }\n  }\n}\n\n// Scheme toggle\nbody {\n  &:not([data-md-prefers-color-scheme=\"true\"])[data-md-color-scheme=\"dracula\"] .md-icon {\n    .light-mode,\n    .system-mode,\n    .unknown-mode {\n      display:  none;\n    }\n  }\n\n\n  &:not([data-md-prefers-color-scheme=\"true\"])[data-md-color-scheme=\"default\"] .md-icon {\n    .dark-mode,\n    .system-mode,\n    .unknown-mode {\n      display:  none;\n    }\n  }\n\n  &:not([data-md-prefers-color-scheme=\"true\"]):not([data-md-color-scheme=\"default\"]):not([data-md-color-scheme=\"dracula\"]) .md-icon {\n    .dark-mode,\n    .light-mode,\n    .system-mode {\n      display:  none;\n    }\n  }\n\n  &[data-md-prefers-color-scheme=\"true\"] .md-icon {\n    .dark-mode,\n    .light-mode,\n    .unknown-mode {\n      display: none;\n    }\n  }\n}\n\n.md-header-nav__scheme {\n  z-index: 0;\n}\n\n@include break-to-device(tablet portrait) {\n  .md-header-nav__scheme {\n    padding-right: 0;\n  }\n\n  label[for=\"__search\"] {\n    padding-left: 0;\n  }\n}\n\n[data-md-toggle=search]:checked~.md-header .md-header-nav__scheme {\n  display: none;\n}\n",".md-typeset .admonition {\n  border-width: 0;\n  border-left-width: 4px;\n}\n\n$new-admonitions: (\n  settings config: $drac-pink $clr-purple-a700 \"@mdi/svg/svg/cog.svg\",\n  new: $drac-yellow $clr-yellow-a700 \"@mdi/svg/svg/alert-decagram.svg\"\n) !default;\n\n  $old-admonitions: (\n    note:                       $drac-dark-yellow,\n    abstract:                   $drac-cyan,\n    info:                       $drac-light-blue,\n    tip:                        $drac-teal,\n    success:                    $drac-green,\n    question:                   $drac-light-green,\n    warning:                    $drac-orange,\n    failure:                    $drac-dark-red,\n    danger:                     $drac-red,\n    bug:                        $drac-dark-pink,\n    example:                    $drac-purple,\n    quote:                      $drac-grey\n  ) !default;\n\n/* Style new admonitions with dark or light colors */\n:root > * {\n  --md-admonition-bg-color: transparent;\n\n  &[data-md-color-scheme=\"dracula\"] {\n    --md-admonition-icon-color: $drac-dark-yellow;\n  }\n\n  @each $names, $prop in $new-admonitions {\n    $tint: nth($prop, 1);\n    $tint2: nth($prop, 2);\n    $name: nth($names, 1);\n\n    & {\n      --md-admonition-icon--#{$name}: svg-load(\"#{nth($prop, 3)}\");\n      --md-admonition-bg-color--#{$name}: #{transparentize($tint2, 0.9)};\n      --md-admonition-icon-color--#{$name}: #{$tint2};\n      --md-admonition-shadow-color--#{$name}: #{transparentize($tint2, 0.9)};\n    }\n\n    &[data-md-color-scheme=\"dracula\"] {\n      --md-admonition-bg-color--#{$name}: var(--md-default-bg-color--ultra-dark);\n      --md-admonition-icon-color--#{$name}: #{$tint};\n      --md-admonition-shadow-color--#{$name}: #{transparentize($tint, 0.9)};\n    }\n\n    @each $names, $tint in $old-admonitions {\n      $name: nth($names, 1);\n\n      & {\n        --md-admonition-bg-color--#{$name}: var(--md-default-bg-color--ultra-dark);\n        --md-admonition-icon-color--#{$name}: #{$tint};\n        --md-admonition-shadow-color--#{$name}: #{transparentize($tint, 0.9)};\n      }\n    }\n  }\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] .md-typeset .admonition {\n  border-color: var(--md-admonition-icon-color--note);\n  box-shadow: var(--md-shadow-z2);\n\n  &:focus-within {\n    box-shadow: 0 0 0 px2rem(4px) var(--md-admonition-shadow-color--note);\n  }\n\n  > .admonition-title {\n    background-color: var(--md-admonition-bg-color--note);\n    &::before {\n      background-color: var(--md-admonition-icon-color--note);\n    }\n    &::after {\n      color: var(--md-admonition-icon-color--note);\n    }\n  }\n}\n\n/* Style existing admonitions with dark mode colors */\n[data-md-color-scheme=\"dracula\"] {\n\n  @each $names, $prop in $old-admonitions {\n\n    $name: nth($names, 1);\n\n    // Define base class\n    .md-typeset .admonition.#{$name} {\n      border-color: var(--md-admonition-icon-color--#{$name});\n\n      &:focus-within {\n        box-shadow: 0 0 0 px2rem(4px) var(--md-admonition-shadow-color--#{$name});\n      }\n\n      // Define base class\n      > .admonition-title {\n        background-color: var(--md-admonition-bg-color--#{$name});\n        border-color: var(--md-admonition-icon-color--#{$name});\n\n        // Icon\n        &::before {\n          background-color: var(--md-admonition-icon-color--#{$name});\n        }\n        &::after {\n          color: var(--md-admonition-icon-color--#{$name});\n        }\n      }\n    }\n\n    // Define synonyms for base class\n    @if length($names) > 1 {\n      @for $n from 2 through length($names) {\n        .#{nth($names, $n)} {\n          @extend .#{$name};\n        }\n      }\n    }\n  }\n}\n\n@each $names, $prop in $new-admonitions {\n  $name: nth($names, 1);\n\n    // Define base class\n  .md-typeset .admonition.#{$name} {\n    border-color: var(--md-admonition-icon-color--#{$name});\n\n    &:focus-within {\n      box-shadow: 0 0 0 px2rem(4px) var(--md-admonition-shadow-color--#{$name});\n    }\n\n    > .admonition-title {\n      background-color: var(--md-admonition-bg-color--#{$name});\n      border-color: var(--md-admonition-icon-color--#{$name});\n\n      // Icon\n      &::before {\n        width: px2rem(20px);\n        height: px2rem(20px);\n        background-color: var(--md-admonition-icon-color--#{$name});\n        background-size: px2rem(20px);\n        mask-image: var(--md-admonition-icon--#{$name});\n        content: \"\\a0\";\n      }\n      &::after {\n        color: var(--md-admonition-icon-color--#{$name});\n      }\n    }\n  }\n\n  // Define synonyms for base class\n  @if length($names) > 1 {\n    @for $n from 2 through length($names) {\n      .#{nth($names, $n)} {\n        @extend .#{$name};\n      }\n    }\n  }\n}\n","mjx-container[display=true] {\n  font-size: 120% !important;\n}\n\nmjx-container:not([display]) {\n  font-size: 100% !important;\n}\n\n[data-md-color-scheme=\"slate\"],\n[data-md-color-scheme=\"dracula\"] {\n  /* stylelint-disable selector-class-pattern */\n  .CtxtMenu_InfoSignature input,\n  .CtxtMenu_InfoContent pre {\n    color: rgb(0, 0, 0);\n  }\n  .CtxtMenu_Info,\n  .CtxtMenu_Menu {\n    box-shadow: 0px 10px 20px rgb(0 0 0 / 0.5);\n  }\n  /* stylelint-enable selector-class-pattern */\n}\n\n.md-typeset .arithmatex {\n  overflow-x: auto !important;\n  overflow-y: hidden !important;\n}\n\n// Fix tag overlap in `KaTeX`\n.katex-display {\n  .katex-html {\n    display: flex !important;\n    flex-direction: row;\n    flex-wrap: nowrap;\n    align-items: baseline;\n    justify-content: space-between;\n    // overflow-x: auto;\n\n    .base {\n      display: inline !important;\n    }\n\n    .tag {\n      position: relative !important;\n      display: inline !important;\n      margin-left: var(--margin-small);\n    }\n  }\n}\n","/* Don't use box shadows */\n.md-typeset {\n  del,\n  ins,\n  mark {\n    &.critic {\n      padding: 0 px2em(4px, 16px);\n      color: unset;\n      box-shadow: none;\n    }\n  }\n\n  .critic.break {\n    margin: 0;\n  }\n}\n","/* Inherit admonition style */\n.md-typeset {\n  details {\n    @extend .admonition;\n\n    overflow: hidden;\n\n    // Title\n    > summary {\n      @extend .admonition-title;\n\n      // Disable accessibility focus\n      &:focus {\n        outline-style: none;\n      }\n    }\n  }\n}\n",".highlight {\n  .kc { // Keyword constant\n    color: var(--md-code-hl-constant-color);\n  }\n\n  .nc,  // Name, class\n  .ne,  // Name, exception\n  {\n    color: var(--md-code-hl-class-color);\n  }\n\n  .mb {\n    color: var(--md-code-hl-number-color);\n  }\n\n  .nb,  // Name, builtin\n  .bp { // Name, builtin pseudo\n    color: var(--md-code-hl-builtin-color);\n  }\n\n  .nn { // Name, namespace Name, namespace Name, namespace Name, namespace\n    color: var(--md-code-hl-namespace-color);\n  }\n\n  .na,  // Name, attribute\n  .nd,  // Name, decorator\n  .ni { // Name, entity\n    color: var(--md-code-hl-entity-color);\n  }\n  .nl,  // Name, label\n  .nt { // Name, tag\n    color: var(--md-code-hl-tag-color);\n  }\n}\n\n.md-typeset {\n\n  /* Allow code to look like code everywhere despite Material's current preference */\n  *:not(pre) > code {\n      margin: 0;\n      padding: 0 px2em( 4px, 13.6px);\n      color: var(--md-code-fg-color);\n      background-color: var(--md-code-inline-bg-color);\n      border-radius: px2rem(2px);\n      box-shadow: none;\n  }\n\n  /* Code that is also a link */\n  a {\n    > code {\n      color: inherit !important;\n      background-color: var(--md-code-link-bg-color) !important;\n      transition: color 125ms;\n      transition: background-color 125ms;\n\n      /* If we are linking highlighted, inline code, force it to just look like a code link */\n      * {\n        color: var(--md-typeset-a-color) !important;\n      }\n\n      &:hover {\n        background-color: var(--md-code-link-accent-bg-color) !important;\n\n        * {\n          color: var(--md-accent-fg-color) !important;\n        }\n      }\n    }\n  }\n\n  pre > code {\n    outline: none;\n  }\n\n  /* Don't always like code breaking in table cells */\n  td code {\n    word-break: normal;\n  }\n\n  .highlight {\n\n    /* Needed for tab preserving mode */\n    tab-size: 8;\n\n    + .result {\n      border-width: px2rem(2px);\n    }\n\n    /* `pymdownx-inline` mode */\n    [data-linenos] {\n\n      /* Special line mode coloring */\n      &.special::before {\n        background-color: var(--md-code-special-bg-color);\n      }\n    }\n  }\n\n    /* Special line number coloring for tables */\n  .highlighttable {\n    .linenodiv {\n      .special {\n        margin-right: px2em(-8px, 13.6px);\n        margin-left: px2em(-16px, 13.6px);\n        padding-right: px2em(8px, 13.6px);\n        padding-left: px2em(16px, 13.6px);\n        background-color: var(--md-code-special-bg-color);\n      }\n    }\n  }\n\n  // Filename span\n  .highlight span.filename {\n\n    // Style the filename banner\n    position: relative;\n    display: block;\n    margin-top: 1em;\n    padding: px2em(8px) px2em(16px, 13.6px) px2em(8px) px2em(40px, 13.6px);\n    font-weight: 700;\n    font-size: px2rem(13.6px);\n    background-color: var(--md-code-title-bg-color);\n    border-top-left-radius: px2rem(2px);\n    border-top-right-radius: px2rem(2px);\n\n    // Adjust margins and and general container look of code block\n    + pre {\n      margin-top: 0;\n\n      code {\n        border-top-left-radius: 0;\n        border-top-right-radius: 0;\n      }\n    }\n\n    // Add code icon\n    &::before {\n      position: absolute;\n      left: px2em(12px, 13.6px);\n      width: px2em(20px, 13.6px);\n      height: px2em(20px, 13.6px);\n      background-color: var(--md-default-fg-color);\n      mask-image: svg-load(\"@mdi/svg/svg/console.svg\");\n      mask-repeat: no-repeat;\n      mask-size: contain;\n      content: \"\";\n    }\n  }\n\n  .collapse-code {\n    position: relative;\n    margin-top: 1em;\n    margin-bottom: 1em;\n\n    pre {\n      margin-top: 0;\n      margin-bottom: 0;\n    }\n\n    input{\n      display: none;\n\n      ~ .code-footer {\n        width: 100%;\n        margin: 0;\n        padding: px2em(4px) px2em(8px) px2em(4px) px2em(0px);\n\n        label {\n          position: relative;\n          margin: 0.05em;\n          padding: 0.15em 0.8em;\n          color: var(--md-primary-bg-color);\n          font-size: 90%;\n          background-color: var(--md-primary-fg-color);\n          mask-repeat: no-repeat;\n          mask-size: contain;\n          border-radius: px2rem(2px);\n          cursor: pointer;\n          content: \"\";\n\n          &:hover {\n            background-color: var(--md-accent-fg-color);\n          }\n\n          &::before {\n            position: absolute;\n            top: 0.15em;\n            left: 0.15em;\n            display: block;\n            box-sizing: border-box;\n            width: 1.25em;\n            height: 1.25em;\n            background-color: var(--md-primary-bg-color);\n            background-size: 1.25em;\n            content: \"\";\n          }\n\n          &.expand {\n            display: none;\n\n            &::before {\n              mask-image: svg-load(\"@mdi/svg/svg/arrow-expand.svg\");\n            }\n          }\n          &.collapse::before {\n            mask-image: svg-load(\"@mdi/svg/svg/arrow-collapse.svg\");\n          }\n        }\n      }\n\n      &:checked {\n        ~ .code-footer label.expand {\n          display: inline;\n        }\n\n        ~ .code-footer label.collapse {\n          display: none;\n        }\n\n        + div.highlight code {\n          max-height: px2em(150px);\n          overflow: hidden;\n        }\n\n        ~ .code-footer {\n          position: absolute;\n          bottom: 0;\n          left: 0;\n          padding: px2em(32px) px2em(8px) px2em(8px) px2rem(16px);\n          background-image: linear-gradient(to bottom,\n              transparent,\n              var(--md-default-bg-color) 80%\n          100%);\n        }\n      }\n    }\n  }\n\n  @include break-to-device(mobile) {\n\n    > {\n      diagram-div {\n        margin-right: px2rem(-16px);\n        margin-left: px2rem(-16px);\n      }\n      .collapse-code {\n        margin-right: px2rem(-16px);\n        margin-left: px2rem(-16px);\n\n        label.collapse {\n          left: px2rem(16px);\n        }\n      }\n    }\n  }\n}\n",".md-typeset {\n\n  // Keyboard key\n  .keys {\n\n    // Define keyboard keys with left icon\n    @each $name, $code in (\n      // Extra Keys\n      \"power\":         \"\\23FB\",\n      \"fingerprint\":   \"\\261D\",\n    ) {\n      .key-#{$name}::before {\n        padding-right: px2em(6.4px);\n        content: $code;\n      }\n    }\n\n    // Define keyboard keys with right icon\n    @each $name, $code in (\n        // Extra Keys\n    ) {\n      .key-#{$name}::after {\n        padding-left: px2em(6.4px);\n        content: $code;\n      }\n    }\n  }\n}\n","// General styling for repository link icons\n:root > * {\n  --magiclink-email-icon: svg-load(\"@mdi/svg/svg/mail.svg\");\n  --magiclink-github-icon: svg-load(\"@mdi/svg/svg/github.svg\");\n  --magiclink-bitbucket-icon: svg-load(\"@mdi/svg/svg/bitbucket.svg\");\n  --magiclink-gitlab-icon: svg-load(\"@mdi/svg/svg/gitlab.svg\");\n  --magiclink-commit-icon: svg-load(\"@primer/octicons/build/svg/git-commit-24.svg\");\n  --magiclink-compare-icon: svg-load(\"@primer/octicons/build/svg/file-diff-24.svg\");\n  --magiclink-pull-icon: svg-load(\"@primer/octicons/build/svg/git-pull-request-24.svg\");\n  --magiclink-issue-icon: svg-load(\"@primer/octicons/build/svg/issue-opened-24.svg\");\n  --magiclink-discussion-icon: svg-load(\"@primer/octicons/build/svg/comment-discussion-24.svg\");\n}\n\n.md-typeset {\n  a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n    mask-image: var(--magiclink-email-icon);\n  }\n\n  .magiclink-repository,\n  .magiclink-compare,\n  .magiclink-commit,\n  .magiclink-pull,\n  .magiclink-issue,\n  .magiclink-discussion,\n  a[href^=\"mailto:\"] {\n    &:not(.magiclink-ignore) {\n      position: relative;\n      padding-left: px2em(22px);\n\n      &::before {\n        position: absolute;\n        top: 0;\n        left: 0;\n        display: block;\n        box-sizing: border-box;\n        width: px2em(20px);\n        height: px2em(20px);\n        background-color: var(--md-typeset-a-color);\n        background-size: px2em(20px);\n        transition: background-color 125ms;\n        mask-repeat: no-repeat;\n        mask-size: contain;\n        content: \"\";\n      }\n\n      &:hover::before {\n        background-color: var(--md-accent-fg-color);\n      }\n    }\n  }\n}\n\n// Assign icons to repository links\n@each $name, $icon in (\n  \"commit\": \"commit\",\n  \"compare\": \"compare\",\n  \"pull\": \"pull\",\n  \"issue\": \"issue\",\n  \"discussion\": \"discussion\"\n) {\n  .md-typeset {\n    .magiclink-#{$name}:not(.magiclink-ignore) {\n      &::before {\n        mask-image: var(--magiclink-#{$icon}-icon);\n      }\n    }\n  }\n}\n\n// Assign icons to repository links\n@each $name, $icon in (\n  \"github\": \"github\",\n  \"gitlab\": \"gitlab\",\n  \"bitbucket\": \"bitbucket\"\n) {\n  .md-typeset {\n    .magiclink-repository.magiclink-#{$name}:not(.magiclink-ignore) {\n      &::before {\n        mask-image: var(--magiclink-#{$icon}-icon);\n      }\n    }\n  }\n}\n","/* Shadow boxes sometimes give issues, so just pad. */\n.md-typeset mark:not(.critic) {\n  box-shadow: none;\n}\n",".md-typeset {\n\n  /* Progress Bars */\n  .progress-label {\n    position: absolute;\n    width: 100%;\n    margin: 0;\n    color: var(--md-text-color);\n    font-weight: 700;\n    line-height: px2rem(28px);\n    white-space: nowrap;\n    text-align: center;\n    text-shadow:\n      px2em(-1px) px2em(-1px) px2em(6px) var(--md-default-bg-color--light),\n      px2em(1px) px2em(-1px) px2em(6px) var(--md-default-bg-color--light),\n      px2em(-1px) px2em(1px) px2em(6px) var(--md-default-bg-color--light),\n      px2em(1px) px2em(1px) px2em(6px) var(--md-default-bg-color--light);\n  }\n\n  .progress-bar {\n    float: left;\n    height: px2rem(24px);\n    background-color: $clr-blue-a400;\n  }\n\n  /* Stripe animation */\n  .candystripe-animate {\n    .progress-bar{\n      animation: animate-stripes 3s linear infinite;\n    }\n  }\n\n  .progress {\n    position: relative;\n    display: block;\n    width: 100%;\n    height: px2rem(24px);\n    margin: px2rem(10px) 0;\n    background-color: var(--md-default-fg-color--lightest);\n\n    &.thin {\n      height: px2rem(8px);\n      margin-top: px2rem(18px);\n\n      .progress-label {\n        margin-top: px2rem(-8px);\n      }\n\n      .progress-bar {\n        height: px2rem(8px);\n      }\n    }\n\n    &.candystripe .progress-bar {\n      background-image:\n        linear-gradient(\n          135deg,\n          var(--md-progress-stripe) 27%,\n          transparent 27%,\n          transparent 52%,\n          var(--md-progress-stripe) 52%,\n          var(--md-progress-stripe) 77%,\n          transparent 77%,\n          transparent\n        );\n      background-size: px2rem(40px) px2rem(40px);\n    }\n  }\n\n  @each $percent, $color in (\n    \"100\": var(--md-progress-100),\n    \"80\": var(--md-progress-80),\n    \"60\": var(--md-progress-60),\n    \"40\": var(--md-progress-40),\n    \"20\": var(--md-progress-20),\n    \"0\": var(--md-progress-0)\n  ) {\n    .progress-#{$percent}plus {\n      .progress-bar {\n        background-color: $color;\n      }\n    }\n  }\n\n  @keyframes animate-stripes {\n    0% {\n      background-position: 0 0;\n    }\n\n    100% {\n      background-position: px2rem(120px) 0;\n    }\n  }\n}\n","/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n  .md-typeset {\n    .tabbed-set > .tabbed-labels {\n      box-shadow: 0 px2rem(-1px) var(--md-default-fg-color--lighter) inset;\n    }\n  }\n}\n\n/* Style code blocks to fill full tab,\n   but otherwise, pad content. */\n.md-typeset {\n  .tabbed-alternate {\n    &.tabbed-set .tabbed-control {\n      width: px2rem(40px);\n\n      &[hidden] {\n        width: px2rem(24px);\n        opacity: 0;\n      }\n    }\n\n    &.tabbed-set > .tabbed-content > .tabbed-block {\n      padding: 0 px2rem(12px);\n\n      > {\n        pre,\n        .codehilite,\n        .codehilitetable,\n        .highlight,\n        .highlighttable {\n\n          &:only-child {\n            margin-right: px2rem(-24px);\n            margin-left: px2rem(-24px);\n            padding-right: px2rem(12px);\n            padding-left: px2rem(12px);\n\n            span.filename {\n              margin-top: 0;\n            }\n          }\n        }\n\n        .collapse-code:only-child {\n          margin-top: 0;\n\n          margin-right: px2rem(-24px);\n          margin-left: px2rem(-24px);\n          padding-right: px2rem(12px);\n          padding-left: px2rem(12px);\n\n          > .code-footer {\n            left: px2rem(12px)\n          }\n        }\n\n        diagram-div:only-child {\n          margin-right: px2rem(-24px);\n          margin-left: px2rem(-24px);\n          padding-right: px2rem(12px);\n          padding-left: px2rem(12px);\n        }\n      }\n    }\n  }\n}\n\n.js .md-typeset .tabbed-labels::before {\n  background-color: var(--md-accent-fg-color);\n}\n\n/* Ignore mobile overflow styling that extends the tab bar */\n@include break-to-device(mobile) {\n  [dir=ltr] .md-content__inner > .tabbed-set .tabbed-labels {\n    padding-left: 0;\n  }\n\n  .md-content__inner > .tabbed-set .tabbed-labels {\n    max-width: 100%;\n    margin: 0;\n    padding-inline-start: 0;\n    scroll-padding-inline-start: 0;\n\n    &::after {\n      padding-inline-end: 0;\n      content: none;\n    }\n\n    // Tabbed control previous\n    ~ .tabbed-control--prev {\n      margin-inline-start: 0;\n      padding-inline-start: 0;\n    }\n\n    // Tabbed control next\n    ~ .tabbed-control--next {\n      margin-inline-end: 0;\n      padding-inline-end: 0;\n    }\n  }\n}\n","/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n  .md-typeset table:not([class]) {\n    box-shadow: var(--md-shadow-z2);\n\n    tr:hover {\n      background-color: rgba(0,0,0,.08);\n    }\n\n    th {\n      color: var(--md-text-color);\n      background-color: var(--md-default-bg-color--ultra-dark);\n      border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n\n    td {\n      border-top: px2rem(1px) solid var(--md-default-fg-color--lighter);\n    }\n  }\n}\n","/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n  .md-typeset .task-list-control {\n    .task-list-indicator::before {\n    \tbackground-color: var(--md-default-fg-color--lighter);\n    }\n\n    [type=checkbox]:checked + .task-list-indicator::before {\n    \tbackground-color: $drac-green;\n    }\n  }\n}\n","// Header anchors\n.md-typeset {\n  .headerlink {\n    width: px2em(16px);\n    height: px2em(16px);\n    vertical-align: middle;\n    background-color: var(--md-default-fg-color--lighter);\n    background-size: px2em(16px);\n    mask-size: px2em(16px);\n    mask-repeat: no-repeat;\n    visibility: visible;\n    mask-image: svg-load(\"@mdi/svg/svg/link.svg\");\n  }\n\n  .headerlink:hover,\n  [id]:target .headerlink {\n    background-color: var(--md-accent-fg-color);\n  }\n}\n","/* Special handling of Mermaid content. */\ndiagram-div {\n  overflow: auto;\n}\n","html {\n  background-color: transparent;\n}\n\n[data-md-component=\"announce\"] .twemoji {\n  color: var(--md-primary-fg-color);\n}\n\n/* Dark mode changes */\n[data-md-color-scheme=\"dracula\"] {\n\n  --md-text-color: var(--md-default-fg-color);\n  background-color: var(--md-default-bg-color);\n\n  // Footer color shades\n  --md-footer-bg-color:                transparent;\n  --md-footer-bg-color--dark:          var(--md-default-bg-color--darkest);\n\n  // Header colors\n  --md-header-fg-color: var(--md-text-color);\n  --md-header-bg-color: var(--md-default-bg-color--darkest);\n\n  // Header\n  .md-header {\n    color: var(--md-text-color);\n    background-color: var(--md-header-bg-color);\n    border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n\n    &[data-md-state=shadow] {\n        box-shadow: 0 0 px2rem(4px) rgba(0,0,0,.15),\n                    0 0 px2rem(4px) px2rem(8px) rgba(0,0,0,.2);\n    }\n  }\n\n  .md-top {\n    background-color: var(--md-default-bg-color--dark);\n\n    &:hover {\n      background-color: var(--md-primary-fg-color);\n    }\n  }\n\n  // Tabs\n  .md-tabs {\n    color: var(--md-text-color);\n    background-color: var(--md-primary-fg-color--transparent);\n\n    &__link--active {\n        color: var(--md-primary-fg-color);\n    }\n\n    &__link:hover {\n        color: var(--md-accent-fg-color);\n    }\n  }\n\n  // Hero\n  .md-hero {\n    color: var(--md-text-color);\n    background-color: var(--md-primary-fg-color--transparent);\n  }\n\n  // Navigation\n  .md-nav__source {\n    color: var(--md-text-color);\n  }\n\n  .md-nav__link[data-md-state=blur] {\n    color: var(--md-default-fg-color--light);\n  }\n\n  .md-nav__item .md-nav__link--active {\n    color: var(--md-primary-fg-color);\n  }\n\n  .md-nav__link {\n    &:focus,\n    &:hover {\n      color: var(--md-accent-fg-color);\n    }\n  }\n\n  @include break-to-device(tablet) {\n\n    .md-nav--primary .md-nav__item--active > .md-nav__link:not(:hover) {\n      color: var(--md-primary-fg-color);\n    }\n\n    // Site title in main navigation\n    .md-nav--primary .md-nav__title {\n      color: var(--md-text-color);\n      background-color: var(--md-header-bg-color);\n      border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n  }\n\n  @include break-to-device(tablet portrait) {\n\n    // Repository containing source\n    .md-nav__source {\n      color: var(--md-text-color);\n      background-color: var(--md-primary-fg-color--transparent);\n    }\n\n    .md-nav .md-nav__title {\n      color: var(--md-text-color);\n      background-color: var(--md-header-bg-color);\n      border-bottom: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n  }\n\n  // Search\n  .md-search__input {\n    color: var(--md-text-color);\n    background-color: var(--md-accent-bg-color--light);\n\n    &:hover {\n      background-color: var(--md-default-bg-color--light);\n    }\n\n    ~ .md-search__icon {\n      color: var(--md-text-color);\n    }\n    &::placeholder {\n      color: var(--md-default-fg-color--light);\n    }\n  }\n\n  [data-md-toggle=search]:checked~.md-header .md-search__input {\n    background-color: transparent;\n  }\n\n  .md-search__suggest {\n    color: var(--md-default-autocomplete-fg-color);\n  }\n\n  .md-search__overlay, .md-overlay {\n    background-color: var(--md-default-bg-color--light);\n  }\n\n  // Footer\n  .md-footer {\n    &-nav__direction {\n      color: var(--md-primary-fg-color);\n    }\n\n    &-meta {\n      border-top: px2rem(1px) solid var(--md-primary-fg-color);\n    }\n  }\n\n  // Announcements\n  [data-md-component=\"announce\"] {\n    background-color: var(--md-default-bg-color--ultra-dark);\n  }\n}\n\n.md-typeset {\n\n  /* Don't force capitalization of `H5` elements. */\n  h5 {\n    color: var(--md-text-color);\n    text-transform: none;\n  }\n}\n\n.md-typeset__scrollwrap,\n.md-sidebar__scrollwrap,\n.md-search__scrollwrap,\n.md-typeset pre > code,\n.md-typeset div.mermaid,\n.md-typeset div.diagram,\n.md-typeset mermaid-div,\n.md-typeset diagram-div,\n.md-typeset pre.arithmatex,\n.md-typeset div.arithmatex {\n  // Firefox scrollbar and thumb\n  scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n  scrollbar-width: thin;\n\n  // Firefox hovered scrollbar and thumb\n  &:hover {\n    scrollbar-color: var(--md-accent-fg-color) transparent;\n  }\n\n  // Override native scrollbar styles\n  &::-webkit-scrollbar {\n    width: px2rem(4px);\n    height: px2rem(4px);\n  }\n\n  &::-webkit-scrollbar-corner {\n    background-color: transparent;\n  }\n\n  // Scrollbar thumb\n  &::-webkit-scrollbar-thumb {\n    background-color: var(--md-default-fg-color--lighter);\n\n    // Hovered scrollbar thumb\n    &:hover {\n      background-color: var(--md-accent-fg-color);\n    }\n  }\n}\n","////\n/// Copyright (c) 2016-2020 Martin Donath <martin.donath@squidfunk.com>\n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Variables\n// ----------------------------------------------------------------------------\n\n///\n/// Device-specific breakpoints\n///\n/// @example\n///   $break-devices: (\n///     mobile: (\n///       portrait:  220px  479px,\n///       landscape: 480px  719px\n///     ),\n///     tablet: (\n///       portrait:  720px  959px,\n///       landscape: 960px  1219px\n///     ),\n///     screen: (\n///       small:     1220px 1599px,\n///       medium:    1600px 1999px,\n///       large:     2000px\n///     )\n///   );\n///\n$break-devices: () !default;\n\n// ----------------------------------------------------------------------------\n// Helpers\n// ----------------------------------------------------------------------------\n\n///\n/// Choose minimum and maximum device widths\n///\n@function break-select-min-max($devices) {\n  $min: 1000000;\n  $max: 0;\n  @each $key, $value in $devices {\n    @while type-of($value) == map {\n      $value: break-select-min-max($value);\n    }\n    @if type-of($value) == list {\n      @each $number in $value {\n        @if type-of($number) == number {\n          $min: min($number, $min);\n          @if $max != null {\n            $max: max($number, $max);\n          }\n        } @else {\n          @error \"Invalid number: #{$number}\";\n        }\n      }\n    } @else if type-of($value) == number {\n      $min: min($value, $min);\n      $max: null;\n    } @else {\n      @error \"Invalid value: #{$value}\";\n    }\n  }\n  @return $min, $max;\n}\n\n///\n/// Select minimum and maximum widths for a device breakpoint\n///\n@function break-select-device($device) {\n  $current: $break-devices;\n  @for $n from 1 through length($device) {\n    @if type-of($current) == map {\n      $current: map-get($current, nth($device, $n));\n    } @else {\n      @error \"Invalid device map: #{$devices}\";\n    }\n  }\n  @if type-of($current) == list or type-of($current) == number {\n    $current: (default: $current);\n  }\n  @return break-select-min-max($current);\n}\n\n// ----------------------------------------------------------------------------\n// Mixins\n// ----------------------------------------------------------------------------\n\n///\n/// A minimum-maximum media query breakpoint\n///\n@mixin break-at($breakpoint) {\n  @if type-of($breakpoint) == number {\n    @media screen and (min-width: $breakpoint) {\n      @content;\n    }\n  } @else if type-of($breakpoint) == list {\n    $min: nth($breakpoint, 1);\n    $max: nth($breakpoint, 2);\n    @if type-of($min) == number and type-of($max) == number {\n      @media screen and (min-width: $min) and (max-width: $max) {\n        @content;\n      }\n    } @else {\n      @error \"Invalid breakpoint: #{$breakpoint}\";\n    }\n  } @else {\n    @error \"Invalid breakpoint: #{$breakpoint}\";\n  }\n}\n\n///\n/// An orientation media query breakpoint\n///\n@mixin break-at-orientation($breakpoint) {\n  @if type-of($breakpoint) == string {\n    @media screen and (orientation: $breakpoint) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid breakpoint: #{$breakpoint}\";\n  }\n}\n\n///\n/// A maximum-aspect-ratio media query breakpoint\n///\n@mixin break-at-ratio($breakpoint) {\n  @if type-of($breakpoint) == number {\n    @media screen and (max-aspect-ratio: $breakpoint) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid breakpoint: #{$breakpoint}\";\n  }\n}\n\n///\n/// A minimum-maximum media query device breakpoint\n///\n@mixin break-at-device($device) {\n  @if type-of($device) == string {\n    $device: $device,;\n  }\n  @if type-of($device) == list {\n    $breakpoint: break-select-device($device);\n    @if nth($breakpoint, 2) != null {\n      $min: nth($breakpoint, 1);\n      $max: nth($breakpoint, 2);\n      @media screen and (min-width: $min) and (max-width: $max) {\n        @content;\n      }\n    } @else {\n      @error \"Invalid device: #{$device}\";\n    }\n  } @else {\n    @error \"Invalid device: #{$device}\";\n  }\n}\n\n///\n/// A minimum media query device breakpoint\n///\n@mixin break-from-device($device) {\n  @if type-of($device) == string {\n    $device: $device,;\n  }\n  @if type-of($device) == list {\n    $breakpoint: break-select-device($device);\n    $min: nth($breakpoint, 1);\n    @media screen and (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid device: #{$device}\";\n  }\n}\n\n///\n/// A maximum media query device breakpoint\n///\n@mixin break-to-device($device) {\n  @if type-of($device) == string {\n    $device: $device,;\n  }\n  @if type-of($device) == list {\n    $breakpoint: break-select-device($device);\n    $max: nth($breakpoint, 2);\n    @media screen and (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @error \"Invalid device: #{$device}\";\n  }\n}\n"]}
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index a3d026793..88539aa64 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -58,6 +58,7 @@ nav:
     - Emoji: extensions/emoji.md
     - EscapeAll: extensions/escapeall.md
     - Extra: extensions/extra.md
+    - FancyLists: extensions/fancylists.md
     - Highlight: extensions/highlight.md
     - InlineHilite: extensions/inlinehilite.md
     - Keys: extensions/keys.md
@@ -172,6 +173,8 @@ markdown_extensions:
   - pymdownx.tabbed:
       alternate_style: true
   - pymdownx.saneheaders:
+  - pymdownx.fancylists:
+      inject_style: true
   - pymdownx.blocks.admonition:
       types:
       - new
diff --git a/pymdownx/fancylists.py b/pymdownx/fancylists.py
new file mode 100644
index 000000000..cfc1cb864
--- /dev/null
+++ b/pymdownx/fancylists.py
@@ -0,0 +1,534 @@
+"""
+Fancy lists in the style of Pandoc.
+
+---
+# A Python implementation of John Gruber's Markdown.
+
+# Started by Manfred Stienstra (http://www.dwerg.net/).
+# Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+# Currently maintained by Waylan Limberg (https://github.com/waylan),
+# Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+# Copyright 2007-2023 The Python Markdown Project (v. 1.7 and later)
+# Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+# Copyright 2004 Manfred Stienstra (the original version)
+
+# License: BSD (see LICENSE.md for details).
+---
+
+Adapted to support "fancy" behavior by Copyright 2024 Isaac Muse.
+
+Work in progress, not fully tested.
+"""
+from markdown.blockprocessors import BlockProcessor
+from markdown.treeprocessors import Treeprocessor
+from .blocks.block import Block
+from .blocks import BlocksExtension
+import xml.etree.ElementTree as etree
+import re
+
+ROMAN_MAP = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
+
+OL_STYLE = {
+    '1': 'decimal',
+    'a': 'lower-alpha',
+    'A': 'upper-alpha',
+    'i': 'lower-roman',
+    'I': 'upper-roman'
+}
+
+
+def roman2int(s):
+    """
+    Convert Roman numeral to integer.
+
+    Values should be validated before as no validation during conversion.
+    """
+
+    s = s.upper()
+
+    # Initialize result
+    total = 0
+    i = 0
+    while i < len(s):
+        # Current index is less than the next, subtract current from next and sum value
+        if i + 1 < len(s) and ROMAN_MAP[s[i]] < ROMAN_MAP[s[i + 1]]:
+            total += ROMAN_MAP[s[i + 1]] - ROMAN_MAP[s[i]]
+            i += 2
+        # Sum the value
+        else:
+            total += ROMAN_MAP[s[i]]
+            i += 1
+
+    return total
+
+
+class FancyOListProcessor(BlockProcessor):
+    """Process fancy ordered list blocks."""
+
+    TAG = 'ol'
+    SIBLING_TAGS = ['ol']
+    OL_TYPES = {
+        'dot-decimal': '1',
+        'paren-decimal': '1',
+        'dot-roman': 'i',
+        'paren-roman': 'i',
+        'dot-ROMAN': 'I',
+        'paren-ROMAN': 'I',
+        'dot-alpha': 'a',
+        'paren-alpha': 'a',
+        'dot-ALPHA': 'A',
+        'paren-ALPHA': 'A'
+    }
+
+    def __init__(self, parser, config):
+        """Initialize."""
+
+        super().__init__(parser)
+
+        list_types = config['additional_ordered_styles']
+        self.alpha_enabled = 'alpha' in list_types
+        self.roman_enabled = 'roman' in list_types
+        self.inject_style = config['inject_style']
+        self.inject_class = config['inject_class']
+
+        formats = ''
+
+        if 'generic' in list_types:
+            formats += r'| \#'
+
+        if 'roman' in list_types:
+            # Rules are similar to https://projecteuler.net/about=roman_numerals
+            # We do not follow the "rule of 3": repeated values should not occur more than 3 times.
+            # The above link suggests that repeats should be restricted such that lower denominations
+            # do not equal or exceed X, C or M. We alter this to allow equaling to help mitigate
+            # conflicts with alphabetical lists.
+            formats += r'''
+            | (?=[IVXLCDM]{2})
+              M*
+              (?:C[MD]|D(?:C{0,4}|C{5}\b)|(?:C{0,9}|C{10}\b))
+              (?:X[CL]|L(?:X{0,4}|X{5}\b)|(?:X{0,9}|X{10}\b))
+              (?:I[XV]|V(?:I{0,4}|I{5}\b)|(?:I{0,9}|I{10}\b))
+            | m*
+              (?:c[md]|d(?:c{0,4}|c{5}\b)|(?:c{0,9}|c{10}\b))
+              (?:x[cl]|l(?:x{0,4}|x{5}\b)|(?:x{0,9}|x{10}\b))
+              (?:i[xv]|v(?:i{0,4}|i{5}\b)|(?:i{0,9}|i{10}\b))
+            '''
+
+            if 'alpha' not in list_types:
+                formats += r'''
+                | [IVXLCDM](?=\)|\.[ ]{2})
+                '''
+
+        if 'alpha' in list_types:
+            formats += r'''
+            | [a-z]
+            | [A-Z](?=\)|\.[ ]{2})
+            '''
+
+        # Detect an item list item.
+        self.list_re = re.compile(
+            r'^[ ]{0,%d}(?:(?:\d+%s)[).])[ ]+(.*)' % (self.tab_length - 1, formats),
+            re.VERBOSE
+        )
+
+        # Detect items on secondary lines which can be of any list type.
+        self.child_re = re.compile(
+            r'^[ ]{0,%d}((?:(?:\d+%s)[).]|[-*+]))[ ]+(.*)' % (self.tab_length - 1, formats),
+            re.VERBOSE
+        )
+
+        # Detect indented (nested) list items of any type.
+        self.indent_re = re.compile(
+            r'^[ ]{%d,%d}(?:(?:\d+%s)[).]|[-*+])[ ]+.*' % (self.tab_length, self.tab_length * 2 - 1, formats),
+            re.VERBOSE
+        )
+
+        self.startswith = "1"
+
+    def test(self, parent, block):
+        """Test to see if block starts with a list."""
+
+        return bool(self.list_re.match(block))
+
+    def run(self, parent, blocks):
+        """Process list items."""
+
+        sibling = self.lastChild(parent)
+
+        # Check for multiple items in one block and get the ordered list fancy type.
+        items, fancy_type = self.get_items(sibling, blocks.pop(0), blocks)
+
+        # Append list items that are under the sibling list if the list type matches
+        if (
+            sibling is not None and sibling.tag in self.SIBLING_TAGS and
+            sibling.attrib.get('__fancylist', '') == fancy_type
+        ):
+            # Previous block was a list item, so set that as parent
+            lst = sibling
+
+            # Make sure previous item is in a `p` - if the item has text,
+            # then it isn't in a `p`.
+            if lst[-1].text:
+                # Since it's possible there are other children for this
+                # sibling, we can't just `SubElement` the `p`, we need to
+                # insert it as the first item.
+                p = etree.Element('p')
+                p.text = lst[-1].text
+                lst[-1].text = ''
+                lst[-1].insert(0, p)
+
+            # If the last item has a tail, then the tail needs to be put in a `p`
+            # likely only when a header is not followed by a blank line.
+            lch = self.lastChild(lst[-1])
+            if lch is not None and lch.tail:
+                p = etree.SubElement(lst[-1], 'p')
+                p.text = lch.tail.lstrip()
+                lch.tail = ''
+
+            # Parse first block differently as it gets wrapped in a `p`.
+            li = etree.SubElement(lst, 'li')
+            self.parser.state.set('looselist')
+            firstitem = items.pop(0)
+            self.parser.parseBlocks(li, [firstitem])
+            self.parser.state.reset()
+
+        # This catches the edge case of a multi-item indented list whose
+        # first item is in a blank parent-list item:
+        # ```
+        #     * * subitem1
+        #         * subitem2
+        # ```
+        # see also `ListIndentProcessor`
+        elif parent.tag in ['ol', 'ul']:
+            lst = parent
+
+        # This is a new, unique list so create parent with appropriate tag.
+        else:
+            if self.TAG == 'ol':
+                # Correct the metadata of a forced list to now represent the actual content
+                if sibling is not None and sibling.attrib.get('__fancylist', '').startswith('force'):
+                    sibling.attrib['__fancylist'] = fancy_type
+                    lst = sibling
+                else:
+                    attrib = {'type': self.OL_TYPES[fancy_type], '__fancylist': fancy_type}
+                    if self.inject_style:
+                        attrib['style'] = f"list-style-type: {OL_STYLE[attrib['type']]};"
+                    if self.inject_class:
+                        attrib['class'] = f"fancylists-{OL_STYLE[attrib['type']]};"
+                    lst = etree.SubElement(
+                        parent,
+                        self.TAG,
+                        attrib
+                    )
+            else:
+                lst = etree.SubElement(parent, self.TAG)
+
+            # Check if a custom start integer is set
+            if self.startswith != '1' and not lst.attrib.get('start', ''):
+                lst.attrib['start'] = self.startswith
+
+        # Set the parse set to list
+        self.parser.state.set('list')
+
+        # Loop through items in block, recursively parsing each with the appropriate parent.
+        for item in items:
+            # Item is indented. Parse with last item as parent
+            if item.startswith(' '*self.tab_length):
+                self.parser.parseBlocks(lst[-1], [item])
+            # New item. Create `li` and parse with it as parent
+            else:
+                li = etree.SubElement(lst, 'li')
+                self.parser.parseBlocks(li, [item])
+
+        # Reset the parse state
+        self.parser.state.reset()
+
+    def get_start(self, fancy_type, m):
+        """Translate list convention into a logical start."""
+
+        # Generic marker
+        if m.group(1).startswith('#'):
+            return '1'
+
+        t = fancy_type.split('-')[1].lower()
+        if t == 'decimal':
+            return m.group(1)[:-1].lstrip('(')
+        elif t == 'roman':
+            return str(roman2int(m.group(1)[:-1]))
+        elif t == 'alpha':
+            return str(ord(m.group(1)[:-1].upper()) - 64)
+
+    def get_fancy_type(self, m, first, fancy_type):
+        """Get the fancy type for a given list item."""
+
+        value = m.group(1)[:-1]
+        sep = m.group(1)[-1]
+        list_type = ''
+
+        # Determine list type convention: _., _), (_)
+        if sep == '.':
+            list_type += 'dot-'
+        elif sep == ')':
+            list_type += 'paren-'
+        else:
+            return list_type, fancy_type
+
+        # The first item will be forced to assume the sibling list's type
+        if fancy_type.startswith('force'):
+            ltype = fancy_type.split('-', 1)[1]
+            # Make sure we aren't forcing an impossible scenario.
+            # If everything looks sound, return the types
+            if value == '#' or (
+                (ltype.lower() == 'decimal' and value.isdigit()) or
+                (
+                    ltype.lower() == 'roman' and
+                    self.roman_enabled and
+                    value.isalpha() and
+                    (len(value) > 2 or value.lower() in 'ivxlcdm')
+                ) or
+                (ltype.lower() == 'alpha' and self.alpha_enabled and len(value) == 1 and value.isalpha())
+            ):
+                fancy_type = list_type + fancy_type.split('-', 1)[1] if list_type else list_type
+                return fancy_type, fancy_type
+
+            # Ignore the force as it cannot be done
+            fancy_type = ''
+
+        # Determine numbering: numerical, roman numerical, alphabetic, or `#` numerical placeholder.
+        if value == '#':
+            list_type += fancy_type.split('-', 1)[1] if fancy_type else 'decimal'
+        elif value.isdigit():
+            list_type += 'decimal'
+        elif len(value) == 1 and value.isalpha():
+            if value.islower():
+                in_roman = value in 'ivxlcdm'
+                if (
+                    self.alpha_enabled and (
+                        not self.roman_enabled or (
+                            first and (not in_roman or ((list_type + 'roman') != fancy_type and value != 'i'))
+                        )
+                    )
+                ):
+                    list_type += 'alpha'
+                elif self.alpha_enabled and not first and ((list_type + 'alpha') == fancy_type or not in_roman):
+                    list_type += 'alpha'
+                else:
+                    list_type += 'roman'
+            elif value.isupper():
+                in_roman = value in 'IVXLCDM'
+                if (
+                    self.alpha_enabled and (
+                        not self.roman_enabled or (
+                            first and (not in_roman or ((list_type + 'ROMAN') != fancy_type and value != 'I'))
+                        )
+                    )
+                ):
+                    list_type += 'ALPHA'
+                elif self.alpha_enabled and not first and ((list_type + 'ALPHA') == fancy_type or not in_roman):
+                    list_type += 'ALPHA'
+                else:
+                    list_type += 'ROMAN'
+        elif value.isupper():
+            list_type += 'ROMAN'
+        elif value.islower():
+            list_type += 'roman'
+
+        return list_type, fancy_type
+
+    def get_items(self, sibling, block, blocks):
+        """Break a block into list items."""
+
+        # Get ordered list fancy type
+        fancy_type = ''
+        if self.TAG == 'ol':
+            if sibling is not None and sibling.tag in self.SIBLING_TAGS:
+                fancy_type = sibling.attrib.get('__fancylist', '')
+        fancy = fancy_type
+
+        items = []
+        rest = []
+        for line in block.split('\n'):
+
+            # We've found a list type that differs form the our current,
+            # so gather the rest to be processed separately.
+            if rest:
+                rest.append(line)
+                continue
+
+            # Child list items
+            m = self.child_re.match(line)
+            if m:
+                # This is a new list item check first item for the start index.
+                # Also check for list items that differ from the first.
+                fancy, fancy_type = self.get_fancy_type(m, not items, fancy)
+
+                # We found a different fancy type, so handle these separately
+                if items and fancy != fancy_type:
+                    rest.append(line)
+                    continue
+
+                # Detect the integer value of first list item.
+                # If we are already in a list, just grab that.
+                if not items and self.TAG == 'ol':
+                    self.startswith = self.get_start(fancy, m)
+                fancy_type = fancy
+
+                # Append to the list
+                items.append(m.group(2))
+
+            # Indented, possibly nested content
+            elif self.indent_re.match(line):
+                # Previous item was indented. Append to that item.
+                if items[-1].startswith(' ' * self.tab_length):
+                    items[-1] = '{}\n{}'.format(items[-1], line)
+                # Other indented content
+                else:
+                    items.append(line)
+
+            # Append non list items to previous list item.
+            else:
+                items[-1] = '{}\n{}'.format(items[-1], line)
+
+        # Insert non-list items back into the blocks to be parsed later
+        if rest:
+            blocks.insert(0, '\n'.join(rest))
+
+        return items, fancy_type
+
+
+class FancyListBlock(Block):
+    """Collapse code."""
+
+    NAME = 'fancylists'
+    ARGUMENT = True
+    OL_TYPE = {
+        '1': 'decimal',
+        'a': 'alpha',
+        'A': 'ALPHA',
+        'i': 'roman',
+        'I': 'ROMAN'
+    }
+
+    def on_init(self):
+        """Handle initialization."""
+
+        ordered_styles = self.config['additional_ordered_styles']
+        self.inject_style = self.config['inject_style']
+        self.inject_class = self.config['inject_class']
+        self.roman_enabled = 'roman' in ordered_styles
+        self.alpha_enabled = 'alpha' in ordered_styles
+
+    def on_validate(self, parent):
+        """Handle on validate event."""
+
+        self.type = '1'
+        self.start = None
+        self.count = 0
+
+        try:
+            for a in self.argument.split():
+                name, value = [x.strip() for x in a.split('=')]
+                if name == 'type' and value in ['a', 'A', 'i', 'I', '1']:
+                    if value.lower() == 'a' and not self.alpha_enabled:
+                        raise ValueError('Alphabetical lists not enabled')
+                    if value.lower() == 'i' and not self.roman_enabled:
+                        raise ValueError('Alphabetical lists not enabled')
+                    self.type = value
+                elif name == 'start':
+                    self.start = max(0, int(value))
+                else:
+                    raise ValueError('Not a valid option')
+        except Exception:
+            return False
+
+        return True
+
+    def on_create(self, parent):
+        """Create the element."""
+
+        # Create an ordered list that will guide the first list item's type
+        attrib = {'type': self.type, '__fancylist': 'force-' + self.OL_TYPE[self.type]}
+        if self.start is not None:
+            attrib['start'] = str(self.start)
+        if self.inject_style:
+            attrib['style'] = f"list-style-type: {OL_STYLE[self.type]};"
+        if self.inject_class:
+            attrib['class'] = f"fancylists-{OL_STYLE[self.type]};"
+
+        self.parent = parent
+        self.ol = etree.SubElement(parent, 'ol', attrib)
+        return parent
+
+    def on_end(self, block):
+        """On end."""
+
+        # Remove the ordered list if empty.
+        if not list(self.ol):
+            self.parent.remove(self.ol)
+
+
+class FancyUListProcessor(FancyOListProcessor):
+    """Process unordered list blocks."""
+
+    SIBLING_TAGS = ['ul']
+    TAG = 'ul'
+
+    def __init__(self, parser, config):
+        """Initialize."""
+
+        super().__init__(parser, config)
+        self.list_re = re.compile(r'^[ ]{0,%d}[-+*][ ]+(.*)' % (self.tab_length - 1))
+
+
+class FancyListTreeprocessor(Treeprocessor):
+    """Clean up fancy list metadata."""
+
+    def run(self, root):
+        """Remove intermediate fancy list type metadata."""
+
+        for ol in root.iter('ol'):
+            if '__fancylist' in ol.attrib:
+                del ol.attrib['__fancylist']
+        return root
+
+
+class FancyListExtension(BlocksExtension):
+    """HTML Blocks Extension."""
+
+    def __init__(self, *args, **kwargs):
+        """Initialize."""
+
+        self.config = {
+            'additional_ordered_styles': [
+                ['roman', 'alpha', 'generic'],
+                "Specify the ordered list formats to add in addition to decimal.",
+            ],
+            'inject_style': [
+                False,
+                "Inject style attribute with the appropriate 'list-style-type'"
+            ],
+            'inject_class': [
+                False,
+                "Inject a class indicating the 'list-style-type'"
+            ]
+        }
+
+        super().__init__(*args, **kwargs)
+
+    def extendMarkdownBlocks(self, md, blocks):
+        """Add Details to Markdown instance."""
+
+        config = self.getConfigs()
+        blocks.register(FancyListBlock, config)
+        ol = FancyOListProcessor(md.parser, config)
+        ul = FancyUListProcessor(md.parser, config)
+        md.parser.blockprocessors.register(ol, 'olist', 40)
+        md.parser.blockprocessors.register(ul, 'ulist', 30)
+        md.treeprocessors.register(FancyListTreeprocessor(md), "olist-cleanup", 10)
+
+
+def makeExtension(*args, **kwargs):
+    """Return extension."""
+
+    return FancyListExtension(*args, **kwargs)


Test patch:
diff --git a/tests/test_extensions/test_fancylists.py b/tests/test_extensions/test_fancylists.py
new file mode 100644
index 000000000..47f2ef65d
--- /dev/null
+++ b/tests/test_extensions/test_fancylists.py
@@ -0,0 +1,1175 @@
+"""Test cases for Details."""
+from .. import util
+
+
+class TestFancyLists(util.MdCase):
+    """Test fancy lists."""
+
+    extension = ['pymdownx.fancylists', 'pymdownx.saneheaders']
+    extension_configs = {}
+
+    def test_unordered(self):
+        """Test unordered lists."""
+
+        self.check_markdown(
+            R'''
+            - item 1
+            * item 2
+            + item 3
+            ''',
+            r'''
+            <ul>
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ul>
+            ''',
+            True
+        )
+
+    def test_ordered(self):
+        """Test ordered lists."""
+
+        self.check_markdown(
+            R'''
+            1. item 1
+            2. item 2
+            3. item 3
+            ''',
+            r'''
+            <ol type="1">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_ordered_paren(self):
+        """Test ordered lists with parenthesis."""
+
+        self.check_markdown(
+            R'''
+            1) item 1
+            2) item 2
+            3) item 3
+            ''',
+            r'''
+            <ol type="1">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_ordered_generic(self):
+        """Test generic ordered list."""
+
+        self.check_markdown(
+            R'''
+            #. item 1
+            #. item 2
+            #. item 3
+            ''',
+            r'''
+            <ol type="1">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_ordered_generic_paren(self):
+        """Test generic ordered list with parenthesis."""
+
+        self.check_markdown(
+            R'''
+            #) item 1
+            #) item 2
+            #) item 3
+            ''',
+            r'''
+            <ol type="1">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_ordered_generic_switch(self):
+        """Test generic ordered list switching over to other style."""
+
+        self.check_markdown(
+            R'''
+            #. item 1
+            #. item 2
+            #) item 1
+            #) item 2
+            ''',
+            r'''
+            <ol type="1">
+            <li>item 1</li>
+            <li>item 2</li>
+            </ol>
+            <ol type="1">
+            <li>item 1</li>
+            <li>item 2</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_ordered_generic_inherit(self):
+        """Test generic ordered list inheritance."""
+
+        self.check_markdown(
+            R'''
+            i.  item i
+            #.  item ii
+            #.  item iii
+            I.  New list
+            ''',
+            r'''
+            <ol type="i">
+            <li>item i</li>
+            <li>item ii</li>
+            <li>item iii</li>
+            </ol>
+            <ol type="I">
+            <li>New list</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_ordered_generic_inherit_no_change(self):
+        """Test generic ordered list inheritance no new list if same type."""
+
+        self.check_markdown(
+            R'''
+            i.  item i
+            #.  item ii
+            #.  item iii
+            iv. item iv
+            ''',
+            r'''
+            <ol type="i">
+            <li>item i</li>
+            <li>item ii</li>
+            <li>item iii</li>
+            <li>item iv</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman(self):
+        """Test Roman numeral lists."""
+
+        self.check_markdown(
+            R'''
+            i.   item 1
+            ii.  item 2
+            iii. item 3
+            iv.  item 4
+            v.   item 5
+            vi.  item 6
+            ''',
+            r'''
+            <ol type="i">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            <li>item 4</li>
+            <li>item 5</li>
+            <li>item 6</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman_paren(self):
+        """Test Roman numeral lists with parenthesis."""
+
+        self.check_markdown(
+            R'''
+            i)   item 1
+            ii)  item 2
+            iii) item 3
+            ''',
+            r'''
+            <ol type="i">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman_upper(self):
+        """Test Roman numeral uppercase lists."""
+
+        self.check_markdown(
+            R'''
+            I.   item 1
+            II.  item 2
+            III. item 3
+            ''',
+            r'''
+            <ol type="I">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman_upper_paren(self):
+        """Test Roman numeral uppercase lists with parenthesis."""
+
+        self.check_markdown(
+            R'''
+            I)   item 1
+            II)  item 2
+            III) item 3
+            ''',
+            r'''
+            <ol type="I">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha(self):
+        """Test alphabetical lists."""
+
+        self.check_markdown(
+            R'''
+            a. item 1
+            b. item 2
+            c. item 3
+            ''',
+            r'''
+            <ol type="a">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_paren(self):
+        """Test alphabetical lists with parenthesis."""
+
+        self.check_markdown(
+            R'''
+            a) item 1
+            b) item 2
+            c) item 3
+            ''',
+            r'''
+            <ol type="a">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_upper(self):
+        """Test alphabetical uppercase lists."""
+
+        self.check_markdown(
+            R'''
+            A.  item 1
+            B.  item 2
+            C.  item 3
+            ''',
+            r'''
+            <ol type="A">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_upper_paren(self):
+        """Test alphabetical uppercase lists with parenthesis."""
+
+        self.check_markdown(
+            R'''
+            A) item 1
+            B) item 2
+            C) item 3
+            ''',
+            r'''
+            <ol type="A">
+            <li>item 1</li>
+            <li>item 2</li>
+            <li>item 3</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_two_spaces(self):
+        """Test alphabetical two space uppercase requirement."""
+
+        self.check_markdown(
+            R'''
+            A.  item 1
+            A. item 2
+            ''',
+            R'''
+            <ol type="A">
+            <li>item 1
+            A. item 2</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman_alpha(self):
+        """Test behavior of alphabetical and Roman numeral."""
+
+        self.check_markdown(
+            R'''
+            v) item 1
+            a) item 2
+
+            i. item 1
+            a. item 1
+            b. item 2
+
+            ''',
+            r'''
+            <ol start="22" type="a">
+            <li>item 1</li>
+            <li>item 2</li>
+            </ol>
+            <ol type="i">
+            <li>item 1</li>
+            </ol>
+            <ol type="a">
+            <li>item 1</li>
+            <li>item 2</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_bad_roman(self):
+        """Test bad Roman numeral."""
+
+        self.check_markdown(
+            R'''
+            iviv. item 1
+            ''',
+            R'''
+            <p>iviv. item 1</p>
+            ''',
+            True
+        )
+
+
+    def test_roman_start(self):
+        """Test bad Roman numeral."""
+
+        self.check_markdown(
+            R'''
+            iv. item 1
+            v.  item 2
+            ''',
+            R'''
+            <ol start="4" type="i">
+            <li>item 1</li>
+            <li>item 2</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman_two_spaces(self):
+        """Test Roman numeral two space uppercase requirement."""
+
+        self.check_markdown(
+            R'''
+            I.  item 1
+            I. item 2
+            ''',
+            R'''
+            <ol type="I">
+            <li>item 1
+            I. item 2</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_roman_relaxed(self):
+        """Test cases related to our less strict approach."""
+
+        self.check_markdown(
+            R'''
+            iiii.  item 1
+
+            MCCCCCCVI. item 1
+            ''',
+            R'''
+            <ol start="4" type="i">
+            <li>item 1</li>
+            </ol>
+            <ol start="1606" type="I">
+            <li>item 1</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_list_nested_same_line(self):
+        """Test list nested on same line."""
+
+        self.check_markdown(
+            R'''
+            a) a) subitem1
+                b) subitem2
+            ''',
+            R'''
+            <ol type="a">
+            <li>
+            <ol type="a">
+            <li>subitem1</li>
+            <li>subitem2</li>
+            </ol>
+            </li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_indented_content(self):
+        """Test indented content."""
+
+        self.check_markdown(
+            R'''
+            #.  A paragraph
+                that is short.
+
+                Another paragraph.
+
+                #. A sublist
+
+                Another paragraph.
+
+            #. A new list item.
+            ''',
+            R'''
+            <ol type="1">
+            <li>
+            <p>A paragraph
+                that is short.</p>
+            <p>Another paragraph.</p>
+            <ol type="1">
+            <li>A sublist</li>
+            </ol>
+            <p>Another paragraph.</p>
+            </li>
+            <li>
+            <p>A new list item.</p>
+            </li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_unindented_content(self):
+        """Test indented content with unindented lines."""
+
+        self.check_markdown(
+            R'''
+            #.  A paragraph
+            that is short.
+
+                Another paragraph
+            with unindented lines.
+
+                #.  A sublist
+                with unindented lines.
+
+            #.  A new list item.
+            ''',
+            R'''
+            <ol type="1">
+            <li>
+            <p>A paragraph
+            that is short.</p>
+            <p>Another paragraph
+            with unindented lines.</p>
+            <ol type="1">
+            <li>A sublist
+            with unindented lines.</li>
+            </ol>
+            </li>
+            <li>
+            <p>A new list item.</p>
+            </li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_header_case(self):
+        """Test case where list follows header."""
+
+        self.check_markdown(
+            R'''
+            Tight List:
+
+            * # Header1
+            Line 1-2 - **not** a header *or* paragraph!
+            * # Header2
+            Line 2-2 - not a header or paragraph!
+
+            Loose List:
+
+            * # Header1
+            Line 1-2 - *a* paragraph
+
+            * # Header2
+            Line 2-2 - a paragraph
+            ''',
+            R'''
+            <p>Tight List:</p>
+            <ul>
+            <li>
+            <h1>Header1</h1>
+            Line 1-2 - <strong>not</strong> a header <em>or</em> paragraph!</li>
+            <li>
+            <h1>Header2</h1>
+            Line 2-2 - not a header or paragraph!</li>
+            </ul>
+            <p>Loose List:</p>
+            <ul>
+            <li>
+            <h1>Header1</h1>
+            <p>Line 1-2 - <em>a</em> paragraph</p>
+            </li>
+            <li>
+            <h1>Header2</h1>
+            <p>Line 2-2 - a paragraph</p>
+            </li>
+            </ul>
+            ''',
+            True
+        )
+
+    def test_mixed_nesting_case(self):
+        """Test mixed nesting case."""
+
+        self.check_markdown(
+            R'''
+            * item 1
+                * item 1-1
+                * item 1-2
+                    * item 1-2-1
+            * item 2
+            * item 3
+            * item 4
+                * item 4-1
+                * item 4-2
+                * item 4-3
+
+                    Paragraph under item 4-3
+
+                Paragraph under item 4
+            ''',
+            R'''
+            <ul>
+            <li>item 1<ul>
+            <li>item 1-1</li>
+            <li>item 1-2<ul>
+            <li>item 1-2-1</li>
+            </ul>
+            </li>
+            </ul>
+            </li>
+            <li>item 2</li>
+            <li>item 3</li>
+            <li>
+            <p>item 4</p>
+            <ul>
+            <li>item 4-1</li>
+            <li>item 4-2</li>
+            <li>
+            <p>item 4-3</p>
+            <p>Paragraph under item 4-3</p>
+            </li>
+            </ul>
+            <p>Paragraph under item 4</p>
+            </li>
+            </ul>
+            ''',
+            True
+        )
+
+    def test_tight_loose_mix(self):
+        """Test inconsistent loose and tight list item spacing."""
+
+        self.check_markdown(
+            R'''
+            * item 1
+            * item 2
+
+            * item 3
+            * item 4
+            ''',
+            R'''
+            <ul>
+            <li>item 1</li>
+            <li>
+            <p>item 2</p>
+            </li>
+            <li>
+            <p>item 3</p>
+            </li>
+            <li>item 4</li>
+            </ul>
+            ''',
+            True
+        )
+
+    def test_roman_mitigation(self):
+        """Test mitigation for conflict case with alphabetical lists."""
+
+        self.check_markdown(
+            R'''
+            IIIII. Roman numeral V
+
+            ---
+
+            VIIIII. Roman numeral X
+
+            ---
+
+            XXXXX. Roman numeral L
+
+            ---
+
+            LXXXXX. Roman numeral C
+
+            ---
+
+            CCCCC. Roman numeral D
+
+            ---
+
+            DCCCCC. Roman numeral M
+
+            /// fancylists | start=5 type=I
+            V.  Alternate work around
+            ///
+            ''',
+            R'''
+            <ol start="5" type="I">
+            <li>Roman numeral V</li>
+            </ol>
+            <hr />
+            <ol start="10" type="I">
+            <li>Roman numeral X</li>
+            </ol>
+            <hr />
+            <ol start="50" type="I">
+            <li>Roman numeral L</li>
+            </ol>
+            <hr />
+            <ol start="100" type="I">
+            <li>Roman numeral C</li>
+            </ol>
+            <hr />
+            <ol start="500" type="I">
+            <li>Roman numeral D</li>
+            </ol>
+            <hr />
+            <ol start="1000" type="I">
+            <li>Roman numeral M</li>
+            </ol>
+            <ol start="5" type="I">
+            <li>Alternate work around</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_mitigation_start(self):
+        """Test mitigation for conflict case with Roman numeral lists with explicit start."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | start=3 type=a
+            i.  Workaround
+            j.  Workaround
+            ///
+            ''',
+            R'''
+            <ol start="3" type="a">
+            <li>Workaround</li>
+            <li>Workaround</li>
+            </ol>
+            ''',
+            True
+        )
+
+
+    def test_alpha_mitigation(self):
+        """Test mitigation for conflict case with Roman numeral lists with explicit start."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+            i.  Workaround
+            j.  Workaround
+            ///
+
+            /// fancylists | type=a
+            i)  Workaround
+            j)  Workaround
+            ///
+            ''',
+            R'''
+            <ol start="9" type="a">
+            <li>Workaround</li>
+            <li>Workaround</li>
+            </ol>
+            <ol start="9" type="a">
+            <li>Workaround</li>
+            <li>Workaround</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_mitigation_switch(self):
+        """Test mitigation for conflict case with Roman numeral lists."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+            i.  Workaround
+            j)  Workaround
+            ///
+            ''',
+            R'''
+            <ol start="9" type="a">
+            <li>Workaround</li>
+            </ol>
+            <ol start="10" type="a">
+            <li>Workaround</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_mitigation_complex(self):
+        """Test mitigation for complex conflict case with Roman numeral lists."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+            i.  Workaround
+
+                Workaround
+
+            j.  Workaround
+            ///
+            ''',
+            R'''
+            <ol start="9" type="a">
+            <li>
+            <p>Workaround</p>
+            <p>Workaround</p>
+            </li>
+            <li>
+            <p>Workaround</p>
+            </li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_mitigation_ul_ignored(self):
+        """Test that mitigation won't target unordered lists."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+            -  Workaround
+
+                Workaround
+
+            -  Workaround
+            ///
+            ''',
+            R'''
+            <ul>
+            <li>
+            <p>Workaround</p>
+            <p>Workaround</p>
+            </li>
+            <li>
+            <p>Workaround</p>
+            </li>
+            </ul>
+            ''',
+            True
+        )
+
+    def test_alpha_mitigation_generic(self):
+        """Test that mitigation works on generic."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | start=9 type=a
+            #.  Workaround
+
+                Workaround
+
+            #. Workaround
+            ///
+            ''',
+            R'''
+            <ol start="9" type="a">
+            <li>
+            <p>Workaround</p>
+            <p>Workaround</p>
+            </li>
+            <li>
+            <p>Workaround</p>
+            </li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_alpha_mitigation_generic_no_start(self):
+        """Test that mitigation works on generic with no start."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+            #.  Workaround
+
+                Workaround
+
+            #. Workaround
+            ///
+            ''',
+            R'''
+            <ol type="a">
+            <li>
+            <p>Workaround</p>
+            <p>Workaround</p>
+            </li>
+            <li>
+            <p>Workaround</p>
+            </li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_mitigation_no_force_alpha(self):
+        """Test case that can't be forced."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+            1. Can't force
+            ///
+            ''',
+            R'''
+            <ol type="a">
+            <li>Can't force</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_mitigation_bad_type(self):
+        """Test bad type in mitigation."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=j
+
+            1. Can't force
+            ///
+            ''',
+            R'''
+            <p>/// fancylists | type=j</p>
+            <ol type="1">
+            <li>Can't force
+            ///</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_mitigation_no_type(self):
+        """Test no type in mitigation."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists |
+
+            a. Can't force
+            ///
+            ''',
+            R'''
+            <p>/// fancylists |</p>
+            <ol type="a">
+            <li>Can't force
+            ///</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_mitigation_only_start(self):
+        """Test no type in mitigation."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | start=5
+
+            a. item 5
+            ///
+            ''',
+            R'''
+            <ol start="5" type="1">
+            <li>item 5</li>
+            </ol>
+            ''',
+            True
+        )
+
+
+class TestFancyListsStyle(util.MdCase):
+    """Test fancy lists."""
+
+    extension = ['pymdownx.fancylists', 'pymdownx.saneheaders']
+    extension_configs = {
+        'pymdownx.fancylists': {
+            'inject_style': True
+        }
+    }
+
+    def test_inject_style(self):
+        """Test injecting styles."""
+
+        self.check_markdown(
+            R'''
+            i. Item i
+            ''',
+            R'''
+            <ol style="list-style-type: lower-roman;" type="i">
+            <li>Item i</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_inject_style_force(self):
+        """Test injecting styles in forced lists."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=i
+            v. Item v
+            ///
+            ''',
+            R'''
+            <ol start="5" style="list-style-type: lower-roman;" type="i">
+            <li>Item v</li>
+            </ol>
+            ''',
+            True
+        )
+
+
+class TestFancyListsClass(util.MdCase):
+    """Test fancy lists."""
+
+    extension = ['pymdownx.fancylists', 'pymdownx.saneheaders']
+    extension_configs = {
+        'pymdownx.fancylists': {
+            'inject_class': True
+        }
+    }
+
+    def test_inject_class(self):
+        """Test injecting class."""
+
+        self.check_markdown(
+            R'''
+            i. Item i
+            ''',
+            R'''
+            <ol class="fancylists-lower-roman;" type="i">
+            <li>Item i</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_inject_class_force(self):
+        """Test injecting class in forced lists."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=i
+            v. Item v
+            ///
+            ''',
+            R'''
+            <ol class="fancylists-lower-roman;" start="5" type="i">
+            <li>Item v</li>
+            </ol>
+            ''',
+            True
+        )
+
+
+class TestFancyListsDisableAlpha(util.MdCase):
+    """Test fancy lists."""
+
+    extension = ['pymdownx.fancylists', 'pymdownx.saneheaders']
+    extension_configs = {
+        'pymdownx.fancylists': {
+            'additional_ordered_styles': ['roman', 'generic']
+        }
+    }
+
+    def test_no_alpha(self):
+        """Test lists when alphabetical lists is disabled."""
+
+        self.check_markdown(
+            R'''
+            i.  item 1
+            ii. item 2
+
+            a. item 1
+
+            V.  item 1
+            ''',
+            R'''
+            <ol type="i">
+            <li>item 1</li>
+            <li>item 2</li>
+            </ol>
+            <p>a. item 1</p>
+            <ol start="5" type="I">
+            <li>item 1</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_no_alpha_force(self):
+        """Test attempting to force alphabetical when they are disabled."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=a
+
+            i. item 1
+            j. item 2
+            ///
+            ''',
+            R'''
+            <p>/// fancylists | type=a</p>
+            <ol type="i">
+            <li>item 1
+            j. item 2
+            ///</li>
+            </ol>
+            ''',
+            True
+        )
+
+
+class TestFancyListsDisableRoman(util.MdCase):
+    """Test fancy lists."""
+
+    extension = ['pymdownx.fancylists', 'pymdownx.saneheaders']
+    extension_configs = {
+        'pymdownx.fancylists': {
+            'additional_ordered_styles': ['alpha', 'generic']
+        }
+    }
+
+    def test_no_roman(self):
+        """Test lists when Roman numerals lists is disabled."""
+
+        self.check_markdown(
+            R'''
+            i. item 1
+            ii. item 2
+
+            a. item 2
+
+            V.  item 1
+            ''',
+            R'''
+            <ol start="9" type="a">
+            <li>
+            <p>item 1
+            ii. item 2</p>
+            </li>
+            <li>
+            <p>item 2</p>
+            </li>
+            </ol>
+            <ol start="22" type="A">
+            <li>item 1</li>
+            </ol>
+            ''',
+            True
+        )
+
+    def test_no_roman_force(self):
+        """Test attempting to force Roman numerals when they are disabled."""
+
+        self.check_markdown(
+            R'''
+            /// fancylists | type=i
+
+            v. item 1
+            vi. item 2
+            ///
+            ''',
+            R'''
+            <p>/// fancylists | type=i</p>
+            <ol start="22" type="a">
+            <li>item 1
+            vi. item 2
+            ///</li>
+            </ol>
+            ''',
+            True
+        )