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
` 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 ` 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 ` 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
- | Extensions |
--------------------------------------------- | ---------------------------------------- | ------
-[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) | |
+ | Extensions |
+-------------------------------------------- | -------------------------------------------- | ------
+[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 \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 \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)
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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ True
+ )
+
+ def test_ordered(self):
+ """Test ordered lists."""
+
+ self.check_markdown(
+ R'''
+ 1. item 1
+ 2. item 2
+ 3. item 3
+ ''',
+ r'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ True
+ )
+
+ def test_ordered_generic(self):
+ """Test generic ordered list."""
+
+ self.check_markdown(
+ R'''
+ #. item 1
+ #. item 2
+ #. item 3
+ ''',
+ r'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ True
+ )
+
+ def test_ordered_generic_paren(self):
+ """Test generic ordered list with parenthesis."""
+
+ self.check_markdown(
+ R'''
+ #) item 1
+ #) item 2
+ #) item 3
+ ''',
+ r'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+
+
+ - item 1
+ - item 2
+
+ ''',
+ 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'''
+
+ - item i
+ - item ii
+ - item iii
+
+
+ - New list
+
+ ''',
+ 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'''
+
+ - item i
+ - item ii
+ - item iii
+ - item iv
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+ - item 4
+ - item 5
+ - item 6
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ True
+ )
+
+ def test_alpha(self):
+ """Test alphabetical lists."""
+
+ self.check_markdown(
+ R'''
+ a. item 1
+ b. item 2
+ c. item 3
+ ''',
+ r'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ True
+ )
+
+ def test_alpha_upper(self):
+ """Test alphabetical uppercase lists."""
+
+ self.check_markdown(
+ R'''
+ A. item 1
+ B. item 2
+ C. item 3
+ ''',
+ r'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+ - item 3
+
+ ''',
+ True
+ )
+
+ def test_alpha_two_spaces(self):
+ """Test alphabetical two space uppercase requirement."""
+
+ self.check_markdown(
+ R'''
+ A. item 1
+ A. item 2
+ ''',
+ R'''
+
+ - item 1
+ A. item 2
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+
+
+ - item 1
+
+
+ - item 1
+ - item 2
+
+ ''',
+ True
+ )
+
+ def test_bad_roman(self):
+ """Test bad Roman numeral."""
+
+ self.check_markdown(
+ R'''
+ iviv. item 1
+ ''',
+ R'''
+ iviv. item 1
+ ''',
+ True
+ )
+
+
+ def test_roman_start(self):
+ """Test bad Roman numeral."""
+
+ self.check_markdown(
+ R'''
+ iv. item 1
+ v. item 2
+ ''',
+ R'''
+
+ - item 1
+ - item 2
+
+ ''',
+ 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'''
+
+ - item 1
+ I. item 2
+
+ ''',
+ 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'''
+
+ - item 1
+
+
+ - item 1
+
+ ''',
+ True
+ )
+
+ def test_list_nested_same_line(self):
+ """Test list nested on same line."""
+
+ self.check_markdown(
+ R'''
+ a) a) subitem1
+ b) subitem2
+ ''',
+ R'''
+
+ -
+
+ - subitem1
+ - subitem2
+
+
+
+ ''',
+ 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'''
+
+ -
+
A paragraph
+ that is short.
+ Another paragraph.
+
+ - A sublist
+
+ Another paragraph.
+
+ -
+
A new list item.
+
+
+ ''',
+ 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'''
+
+ -
+
A paragraph
+ that is short.
+ Another paragraph
+ with unindented lines.
+
+ - A sublist
+ with unindented lines.
+
+
+ -
+
A new list item.
+
+
+ ''',
+ 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'''
+ 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
+
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 1-1
+ - item 1-2
+
+
+
+ - item 2
+ - item 3
+ -
+
item 4
+
+ - item 4-1
+ - item 4-2
+ -
+
item 4-3
+ Paragraph under item 4-3
+
+
+ Paragraph under item 4
+
+
+ ''',
+ 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'''
+
+ - item 1
+ -
+
item 2
+
+ -
+
item 3
+
+ - item 4
+
+ ''',
+ 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'''
+
+ - Roman numeral V
+
+
+
+ - Roman numeral X
+
+
+
+ - Roman numeral L
+
+
+
+ - Roman numeral C
+
+
+
+ - Roman numeral D
+
+
+
+ - Roman numeral M
+
+
+ - Alternate work around
+
+ ''',
+ 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'''
+
+ - Workaround
+ - Workaround
+
+ ''',
+ 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'''
+
+ - Workaround
+ - Workaround
+
+
+ - Workaround
+ - Workaround
+
+ ''',
+ 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'''
+
+ - Workaround
+
+
+ - Workaround
+
+ ''',
+ 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'''
+
+ -
+
Workaround
+ Workaround
+
+ -
+
Workaround
+
+
+ ''',
+ 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'''
+
+ -
+
Workaround
+ Workaround
+
+ -
+
Workaround
+
+
+ ''',
+ 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'''
+
+ -
+
Workaround
+ Workaround
+
+ -
+
Workaround
+
+
+ ''',
+ 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'''
+
+ -
+
Workaround
+ Workaround
+
+ -
+
Workaround
+
+
+ ''',
+ 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'''
+
+ - Can't force
+
+ ''',
+ True
+ )
+
+ def test_mitigation_bad_type(self):
+ """Test bad type in mitigation."""
+
+ self.check_markdown(
+ R'''
+ /// fancylists | type=j
+
+ 1. Can't force
+ ///
+ ''',
+ R'''
+ /// fancylists | type=j
+
+ - Can't force
+ ///
+
+ ''',
+ True
+ )
+
+ def test_mitigation_no_type(self):
+ """Test no type in mitigation."""
+
+ self.check_markdown(
+ R'''
+ /// fancylists |
+
+ a. Can't force
+ ///
+ ''',
+ R'''
+ /// fancylists |
+
+ - Can't force
+ ///
+
+ ''',
+ True
+ )
+
+ def test_mitigation_only_start(self):
+ """Test no type in mitigation."""
+
+ self.check_markdown(
+ R'''
+ /// fancylists | start=5
+
+ a. item 5
+ ///
+ ''',
+ R'''
+
+ - item 5
+
+ ''',
+ 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'''
+
+ - Item i
+
+ ''',
+ True
+ )
+
+ def test_inject_style_force(self):
+ """Test injecting styles in forced lists."""
+
+ self.check_markdown(
+ R'''
+ /// fancylists | type=i
+ v. Item v
+ ///
+ ''',
+ R'''
+
+ - Item v
+
+ ''',
+ 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'''
+
+ - Item i
+
+ ''',
+ True
+ )
+
+ def test_inject_class_force(self):
+ """Test injecting class in forced lists."""
+
+ self.check_markdown(
+ R'''
+ /// fancylists | type=i
+ v. Item v
+ ///
+ ''',
+ R'''
+
+ - Item v
+
+ ''',
+ 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'''
+
+ - item 1
+ - item 2
+
+ a. item 1
+
+ - item 1
+
+ ''',
+ 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'''
+ /// fancylists | type=a
+
+ - item 1
+ j. item 2
+ ///
+
+ ''',
+ 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'''
+
+ -
+
item 1
+ ii. item 2
+
+ -
+
item 2
+
+
+
+ - item 1
+
+ ''',
+ 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'''
+ /// fancylists | type=i
+
+ - item 1
+ vi. item 2
+ ///
+
+ ''',
+ True
+ )