aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot')
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/__init__.py393
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/italic-field-names.css26
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/math.css332
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/minimal.css293
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/plain.css307
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/responsive.css486
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/template.txt8
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/tuftig.css566
8 files changed, 2411 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/__init__.py b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/__init__.py
new file mode 100644
index 00000000..c9bdf66c
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/__init__.py
@@ -0,0 +1,393 @@
+# $Id: __init__.py 9539 2024-02-17 10:36:51Z milde $
+# :Author: Günter Milde <milde@users.sf.net>
+# Based on the html4css1 writer by David Goodger.
+# :Maintainer: docutils-develop@lists.sourceforge.net
+# :Copyright: © 2005, 2009, 2015 Günter Milde,
+# portions from html4css1 © David Goodger.
+# :License: Released under the terms of the `2-Clause BSD license`_, in short:
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+# This file is offered as-is, without any warranty.
+#
+# .. _2-Clause BSD license: https://opensource.org/licenses/BSD-2-Clause
+
+# Use "best practice" as recommended by the W3C:
+# http://www.w3.org/2009/cheatsheet/
+
+"""
+Plain HyperText Markup Language document tree Writer.
+
+The output conforms to the `HTML 5` specification.
+
+The cascading style sheet "minimal.css" is required for proper viewing,
+the style sheet "plain.css" improves reading experience.
+"""
+__docformat__ = 'reStructuredText'
+
+from pathlib import Path
+
+from docutils import frontend, nodes
+from docutils.writers import _html_base
+
+
+class Writer(_html_base.Writer):
+
+ supported = ('html5', 'xhtml', 'html')
+ """Formats this writer supports."""
+
+ default_stylesheets = ['minimal.css', 'plain.css']
+ default_stylesheet_dirs = ['.', str(Path(__file__).parent)]
+ default_template = Path(__file__).parent / 'template.txt'
+
+ # use a copy of the parent spec with some modifications
+ settings_spec = frontend.filter_settings_spec(
+ _html_base.Writer.settings_spec,
+ template=(
+ f'Template file. (UTF-8 encoded, default: "{default_template}")',
+ ['--template'],
+ {'default': default_template, 'metavar': '<file>'}),
+ stylesheet_path=(
+ 'Comma separated list of stylesheet paths. '
+ 'Relative paths are expanded if a matching file is found in '
+ 'the --stylesheet-dirs. With --link-stylesheet, '
+ 'the path is rewritten relative to the output HTML file. '
+ '(default: "%s")' % ','.join(default_stylesheets),
+ ['--stylesheet-path'],
+ {'metavar': '<file[,file,...]>', 'overrides': 'stylesheet',
+ 'validator': frontend.validate_comma_separated_list,
+ 'default': default_stylesheets}),
+ stylesheet_dirs=(
+ 'Comma-separated list of directories where stylesheets are found. '
+ 'Used by --stylesheet-path when expanding relative path '
+ 'arguments. (default: "%s")' % ','.join(default_stylesheet_dirs),
+ ['--stylesheet-dirs'],
+ {'metavar': '<dir[,dir,...]>',
+ 'validator': frontend.validate_comma_separated_list,
+ 'default': default_stylesheet_dirs}),
+ initial_header_level=(
+ 'Specify the initial header level. Does not affect document '
+ 'title & subtitle (see --no-doc-title). (default: 2 for "<h2>")',
+ ['--initial-header-level'],
+ {'choices': '1 2 3 4 5 6'.split(), 'default': '2',
+ 'metavar': '<level>'}),
+ no_xml_declaration=(
+ 'Omit the XML declaration (default).',
+ ['--no-xml-declaration'],
+ {'dest': 'xml_declaration', 'action': 'store_false'}),
+ )
+ settings_spec = settings_spec + (
+ 'HTML5 Writer Options',
+ '',
+ ((frontend.SUPPRESS_HELP, # Obsoleted by "--image-loading"
+ ['--embed-images'],
+ {'action': 'store_true',
+ 'validator': frontend.validate_boolean}),
+ (frontend.SUPPRESS_HELP, # Obsoleted by "--image-loading"
+ ['--link-images'],
+ {'dest': 'embed_images', 'action': 'store_false'}),
+ ('Suggest at which point images should be loaded: '
+ '"embed", "link" (default), or "lazy".',
+ ['--image-loading'],
+ {'choices': ('embed', 'link', 'lazy'),
+ # 'default': 'link' # default set in _html_base.py
+ }),
+ ('Append a self-link to section headings.',
+ ['--section-self-link'],
+ {'default': False, 'action': 'store_true'}),
+ ('Do not append a self-link to section headings. (default)',
+ ['--no-section-self-link'],
+ {'dest': 'section_self_link', 'action': 'store_false'}),
+ )
+ )
+
+ config_section = 'html5 writer'
+
+ def __init__(self):
+ self.parts = {}
+ self.translator_class = HTMLTranslator
+
+
+class HTMLTranslator(_html_base.HTMLTranslator):
+ """
+ This writer generates `polyglot markup`: HTML5 that is also valid XML.
+
+ Safe subclassing: when overriding, treat ``visit_*`` and ``depart_*``
+ methods as a unit to prevent breaks due to internal changes. See the
+ docstring of docutils.writers._html_base.HTMLTranslator for details
+ and examples.
+ """
+
+ # self.starttag() arguments for the main document
+ documenttag_args = {'tagname': 'main'}
+
+ # add meta tag to fix rendering in mobile browsers
+ def __init__(self, document):
+ super().__init__(document)
+ self.meta.append('<meta name="viewport" '
+ 'content="width=device-width, initial-scale=1" />\n')
+
+ # <acronym> tag obsolete in HTML5. Use the <abbr> tag instead.
+ def visit_acronym(self, node):
+ # @@@ implementation incomplete ("title" attribute)
+ self.body.append(self.starttag(node, 'abbr', ''))
+
+ def depart_acronym(self, node):
+ self.body.append('</abbr>')
+
+ # no standard meta tag name in HTML5, use separate "author" meta tags
+ # https://www.w3.org/TR/html5/document-metadata.html#standard-metadata-names
+ def visit_authors(self, node):
+ self.visit_docinfo_item(node, 'authors', meta=False)
+ for subnode in node:
+ self.meta.append('<meta name="author" content='
+ f'"{self.attval(subnode.astext())}" />\n')
+
+ def depart_authors(self, node):
+ self.depart_docinfo_item()
+
+ # use the <figcaption> semantic tag.
+ def visit_caption(self, node):
+ if isinstance(node.parent, nodes.figure):
+ self.body.append('<figcaption>\n')
+ self.body.append(self.starttag(node, 'p', ''))
+
+ def depart_caption(self, node):
+ self.body.append('</p>\n')
+ # <figcaption> is closed in depart_figure(), as legend may follow.
+
+ # use HTML block-level tags if matching class value found
+ supported_block_tags = {'ins', 'del'}
+
+ def visit_container(self, node):
+ # If there is exactly one of the "supported block tags" in
+ # the list of class values, use it as tag name:
+ classes = node['classes']
+ tags = [cls for cls in classes
+ if cls in self.supported_block_tags]
+ if len(tags) == 1:
+ node.html5tagname = tags[0]
+ classes.remove(tags[0])
+ else:
+ node.html5tagname = 'div'
+ self.body.append(self.starttag(node, node.html5tagname,
+ CLASS='docutils container'))
+
+ def depart_container(self, node):
+ self.body.append(f'</{node.html5tagname}>\n')
+ del node.html5tagname
+
+ # no standard meta tag name in HTML5, use dcterms.rights
+ # see https://wiki.whatwg.org/wiki/MetaExtensions
+ def visit_copyright(self, node):
+ self.visit_docinfo_item(node, 'copyright', meta=False)
+ self.meta.append('<meta name="dcterms.rights" '
+ f'content="{self.attval(node.astext())}" />\n')
+
+ def depart_copyright(self, node):
+ self.depart_docinfo_item()
+
+ # no standard meta tag name in HTML5, use dcterms.date
+ def visit_date(self, node):
+ self.visit_docinfo_item(node, 'date', meta=False)
+ self.meta.append('<meta name="dcterms.date" '
+ f'content="{self.attval(node.astext())}" />\n')
+
+ def depart_date(self, node):
+ self.depart_docinfo_item()
+
+ # use new HTML5 <figure> and <figcaption> elements
+ def visit_figure(self, node):
+ atts = {}
+ if node.get('width'):
+ atts['style'] = f"width: {node['width']}"
+ if node.get('align'):
+ atts['class'] = f"align-{node['align']}"
+ self.body.append(self.starttag(node, 'figure', **atts))
+
+ def depart_figure(self, node):
+ if len(node) > 1:
+ self.body.append('</figcaption>\n')
+ self.body.append('</figure>\n')
+
+ # use HTML5 <footer> element
+ def visit_footer(self, node):
+ self.context.append(len(self.body))
+
+ def depart_footer(self, node):
+ start = self.context.pop()
+ footer = [self.starttag(node, 'footer')]
+ footer.extend(self.body[start:])
+ footer.append('</footer>\n')
+ self.footer.extend(footer)
+ self.body_suffix[:0] = footer
+ del self.body[start:]
+
+ # use HTML5 <header> element
+ def visit_header(self, node):
+ self.context.append(len(self.body))
+
+ def depart_header(self, node):
+ start = self.context.pop()
+ header = [self.starttag(node, 'header')]
+ header.extend(self.body[start:])
+ header.append('</header>\n')
+ self.body_prefix.extend(header)
+ self.header.extend(header)
+ del self.body[start:]
+
+ # use HTML text-level tags if matching class value found
+ supported_inline_tags = {'code', 'kbd', 'dfn', 'samp', 'var',
+ 'bdi', 'del', 'ins', 'mark', 'small',
+ 'b', 'i', 'q', 's', 'u'}
+
+ # Use `supported_inline_tags` if found in class values
+ def visit_inline(self, node):
+ classes = node['classes']
+ node.html5tagname = 'span'
+ # Special handling for "code" directive content
+ if (isinstance(node.parent, nodes.literal_block)
+ and 'code' in node.parent.get('classes')
+ or isinstance(node.parent, nodes.literal)
+ and getattr(node.parent, 'html5tagname', None) == 'code'):
+ if classes == ['ln']:
+ # line numbers are not part of the "fragment of computer code"
+ if self.body[-1] == '<code>':
+ del self.body[-1]
+ else:
+ self.body.append('</code>')
+ node.html5tagname = 'small'
+ else:
+ tags = [cls for cls in self.supported_inline_tags
+ if cls in classes]
+ if len(tags):
+ node.html5tagname = tags[0]
+ classes.remove(node.html5tagname)
+ self.body.append(self.starttag(node, node.html5tagname, ''))
+
+ def depart_inline(self, node):
+ self.body.append(f'</{node.html5tagname}>')
+ if (node.html5tagname == 'small' and node.get('classes') == ['ln']
+ and isinstance(node.parent, nodes.literal_block)):
+ self.body.append(f'<code data-lineno="{node.astext()}">')
+ del node.html5tagname
+
+ # place inside HTML5 <figcaption> element (together with caption)
+ def visit_legend(self, node):
+ if not isinstance(node.parent[1], nodes.caption):
+ self.body.append('<figcaption>\n')
+ self.body.append(self.starttag(node, 'div', CLASS='legend'))
+
+ def depart_legend(self, node):
+ self.body.append('</div>\n')
+ # <figcaption> closed in visit_figure()
+
+ # use HTML5 text-level tags if matching class value found
+ def visit_literal(self, node):
+ classes = node['classes']
+ html5tagname = 'span'
+ tags = [cls for cls in self.supported_inline_tags
+ if cls in classes]
+ if len(tags):
+ html5tagname = tags[0]
+ classes.remove(html5tagname)
+ if html5tagname == 'code':
+ node.html5tagname = html5tagname
+ self.body.append(self.starttag(node, html5tagname, ''))
+ return
+ self.body.append(
+ self.starttag(node, html5tagname, '', CLASS='docutils literal'))
+ text = node.astext()
+ # remove hard line breaks (except if in a parsed-literal block)
+ if not isinstance(node.parent, nodes.literal_block):
+ text = text.replace('\n', ' ')
+ # Protect text like ``--an-option`` and the regular expression
+ # ``[+]?(\d+(\.\d*)?|\.\d+)`` from bad line wrapping
+ for token in self.words_and_spaces.findall(text):
+ if token.strip() and self.in_word_wrap_point.search(token):
+ self.body.append(
+ f'<span class="pre">{self.encode(token)}</span>')
+ else:
+ self.body.append(self.encode(token))
+ self.body.append(f'</{html5tagname}>')
+ # Content already processed:
+ raise nodes.SkipNode
+
+ def depart_literal(self, node):
+ # skipped unless literal element is from "code" role:
+ self.depart_inline(node)
+
+ # Meta tags: 'lang' attribute replaced by 'xml:lang' in XHTML 1.1
+ # HTML5/polyglot recommends using both
+ def visit_meta(self, node):
+ if node.hasattr('lang'):
+ node['xml:lang'] = node['lang']
+ self.meta.append(self.emptytag(node, 'meta',
+ **node.non_default_attributes()))
+
+ def depart_meta(self, node):
+ pass
+
+ # no standard meta tag name in HTML5
+ def visit_organization(self, node):
+ self.visit_docinfo_item(node, 'organization', meta=False)
+
+ def depart_organization(self, node):
+ self.depart_docinfo_item()
+
+ # use the new HTML5 element <section>
+ def visit_section(self, node):
+ self.section_level += 1
+ self.body.append(
+ self.starttag(node, 'section'))
+
+ def depart_section(self, node):
+ self.section_level -= 1
+ self.body.append('</section>\n')
+
+ # use the new HTML5 element <aside>
+ def visit_sidebar(self, node):
+ self.body.append(
+ self.starttag(node, 'aside', CLASS='sidebar'))
+ self.in_sidebar = True
+
+ def depart_sidebar(self, node):
+ self.body.append('</aside>\n')
+ self.in_sidebar = False
+
+ # Use new HTML5 element <aside> or <nav>
+ # Add class value to <body>, if there is a ToC in the document
+ # (see responsive.css how this is used for a navigation sidebar).
+ def visit_topic(self, node):
+ atts = {'classes': ['topic']}
+ if 'contents' in node['classes']:
+ node.html5tagname = 'nav'
+ del atts['classes']
+ if isinstance(node.parent, nodes.document):
+ atts['role'] = 'doc-toc'
+ self.body_prefix[0] = '</head>\n<body class="with-toc">\n'
+ elif 'abstract' in node['classes']:
+ node.html5tagname = 'div'
+ atts['role'] = 'doc-abstract'
+ elif 'dedication' in node['classes']:
+ node.html5tagname = 'div'
+ atts['role'] = 'doc-dedication'
+ else:
+ node.html5tagname = 'aside'
+ self.body.append(self.starttag(node, node.html5tagname, **atts))
+
+ def depart_topic(self, node):
+ self.body.append(f'</{node.html5tagname}>\n')
+ del node.html5tagname
+
+ # append self-link
+ def section_title_tags(self, node):
+ start_tag, close_tag = super().section_title_tags(node)
+ ids = node.parent['ids']
+ if (ids and getattr(self.settings, 'section_self_link', None)
+ and not isinstance(node.parent, nodes.document)):
+ self_link = ('<a class="self-link" title="link to this section"'
+ f' href="#{ids[0]}"></a>')
+ close_tag = close_tag.replace('</h', self_link + '</h')
+ return start_tag, close_tag
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/italic-field-names.css b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/italic-field-names.css
new file mode 100644
index 00000000..75908529
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/italic-field-names.css
@@ -0,0 +1,26 @@
+/* italic-field-name.css: */
+/* Alternative style for Docutils field-lists */
+
+/* :Copyright: © 2023 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+
+/* In many contexts, a **bold** field name is too heavy styling. */
+/* Use *italic* instead:: */
+
+dl.field-list > dt {
+ font-weight: normal;
+ font-style: italic;
+}
+dl.field-list > dt > .colon {
+ font-style: normal;
+ padding-left: 0.05ex;
+}
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/math.css b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/math.css
new file mode 100644
index 00000000..eb1ba72e
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/math.css
@@ -0,0 +1,332 @@
+/*
+* math2html: convert LaTeX equations to HTML output.
+*
+* Copyright (C) 2009,2010 Alex Fernández
+* 2021 Günter Milde
+*
+* Released under the terms of the `2-Clause BSD license'_, in short:
+* Copying and distribution of this file, with or without modification,
+* are permitted in any medium without royalty provided the copyright
+* notice and this notice are preserved.
+* This file is offered as-is, without any warranty.
+*
+* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause
+*
+* Based on eLyXer: convert LyX source files to HTML output.
+* http://elyxer.nongnu.org/
+*
+*
+* CSS file for LaTeX formulas.
+*
+* References: http://www.zipcon.net/~swhite/docs/math/math.html
+* http://www.cs.tut.fi/~jkorpela/math/
+*/
+
+/* Formulas */
+.formula {
+ text-align: center;
+ margin: 1.2em 0;
+ line-height: 1.4;
+}
+span.formula {
+ white-space: nowrap;
+}
+div.formula {
+ padding: 0.5ex;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* Basic features */
+a.eqnumber {
+ display: inline-block;
+ float: right;
+ clear: right;
+ font-weight: bold;
+}
+span.unknown {
+ color: #800000;
+}
+span.ignored, span.arraydef {
+ display: none;
+}
+.phantom {
+ visibility: hidden;
+}
+.formula i {
+ letter-spacing: 0.1ex;
+}
+
+/* Alignment */
+.align-l {
+ text-align: left;
+}
+.align-r {
+ text-align: right;
+}
+.align-c {
+ text-align: center;
+}
+
+/* Structures */
+span.hspace {
+ display: inline-block;
+}
+span.overline, span.bar {
+ text-decoration: overline;
+}
+.fraction, .fullfraction, .textfraction {
+ display: inline-block;
+ vertical-align: middle;
+ text-align: center;
+}
+span.formula .fraction,
+.textfraction,
+span.smallmatrix {
+ font-size: 80%;
+ line-height: 1;
+}
+span.numerator {
+ display: block;
+ line-height: 1;
+}
+span.denominator {
+ display: block;
+ line-height: 1;
+ padding: 0ex;
+ border-top: thin solid;
+}
+.formula sub, .formula sup {
+ font-size: 80%;
+}
+sup.numerator, sup.unit {
+ vertical-align: 80%;
+}
+sub.denominator, sub.unit {
+ vertical-align: -20%;
+}
+span.smallsymbol {
+ font-size: 75%;
+ line-height: 75%;
+}
+span.boldsymbol {
+ font-weight: bold;
+}
+span.sqrt {
+ display: inline-block;
+ vertical-align: middle;
+ padding: 0.1ex;
+}
+sup.root {
+ position: relative;
+ left: 1.4ex;
+}
+span.radical {
+ display: inline-block;
+ padding: 0ex;
+ /* font-size: 160%; for DejaVu, not required with STIX */
+ line-height: 100%;
+ vertical-align: top;
+ vertical-align: middle;
+}
+
+span.root {
+ display: inline-block;
+ border-top: thin solid;
+ padding: 0ex;
+ vertical-align: middle;
+}
+div.formula .bigoperator,
+.displaystyle .bigoperator,
+.displaystyle .bigoperator {
+ line-height: 120%;
+ font-size: 140%;
+ padding-right: 0.2ex;
+}
+span.fraction .bigoperator,
+span.scriptstyle .bigoperator {
+ line-height: inherit;
+ font-size: inherit;
+ padding-right: 0;
+}
+span.bigdelimiter {
+ display: inline-block;
+}
+span.bigdelimiter.size1 {
+ transform: scale(1, 1.2);
+ line-height: 1.2;
+}
+span.bigdelimiter.size2 {
+ transform: scale(1, 1.62);
+ line-height: 1.62%;
+
+}
+span.bigdelimiter.size3 {
+ transform: scale(1, 2.05);
+ line-height: 2.05%;
+}
+span.bigdelimiter.size4 {
+ transform: scale(1, 2.47);
+ line-height: 2.47%;
+}
+/* vertically stacked sub and superscript */
+span.scripts {
+ display: inline-table;
+ vertical-align: middle;
+ padding-right: 0.2ex;
+}
+.script {
+ display: table-row;
+ text-align: left;
+ line-height: 150%;
+}
+span.limits {
+ display: inline-table;
+ vertical-align: middle;
+}
+.limit {
+ display: table-row;
+ line-height: 99%;
+}
+sup.limit, sub.limit {
+ line-height: 100%;
+}
+span.embellished,
+span.embellished > .base {
+ display: inline-block;
+}
+span.embellished > sup,
+span.embellished > sub {
+ display: inline-block;
+ font-size: 100%;
+ position: relative;
+ bottom: 0.3em;
+ width: 0px;
+}
+span.embellished > sub {
+ top: 0.4em;
+}
+
+/* Environments */
+span.array, span.bracketcases, span.binomial, span.environment {
+ display: inline-table;
+ text-align: center;
+ vertical-align: middle;
+}
+span.arrayrow, span.binomrow {
+ display: table-row;
+ padding: 0;
+ border: 0;
+}
+span.arraycell, span.bracket, span.case, span.binomcell, span.environmentcell {
+ display: table-cell;
+ padding: 0ex 0.2ex;
+ line-height: 1; /* 99%; */
+ border: 0ex;
+}
+.environment.align > .arrayrow > .arraycell.align-l {
+ padding-right: 2em;
+}
+
+/* Inline binomials */
+span.binom {
+ display: inline-block;
+ vertical-align: middle;
+ text-align: center;
+ font-size: 80%;
+}
+span.binomstack {
+ display: block;
+ padding: 0em;
+}
+
+/* Over- and underbraces */
+span.overbrace {
+ border-top: 2pt solid;
+}
+span.underbrace {
+ border-bottom: 2pt solid;
+}
+
+/* Stackrel */
+span.stackrel {
+ display: inline-block;
+ text-align: center;
+}
+span.upstackrel {
+ display: block;
+ padding: 0em;
+ font-size: 80%;
+ line-height: 64%;
+ position: relative;
+ top: 0.15em;
+
+}
+span.downstackrel {
+ display: block;
+ vertical-align: bottom;
+ padding: 0em;
+}
+
+/* Fonts */
+.formula {
+ font-family: STIX, "DejaVu Serif", "DejaVu Math TeX Gyre", serif;
+}
+span.radical, /* ensure correct size of square-root sign */
+span.integral { /* upright integral signs for better alignment of indices */
+ font-family: "STIXIntegralsUp", STIX;
+ /* font-size: 115%; match apparent size with DejaVu */
+}
+span.bracket {
+ /* some "STIX" and "DejaVu Math TeX Gyre" bracket pieces don't fit */
+ font-family: "DejaVu Serif", serif;
+}
+span.mathsf, span.textsf {
+ font-family: sans-serif;
+}
+span.mathrm, span.textrm {
+ font-family: STIX, "DejaVu Serif", "DejaVu Math TeX Gyre", serif;
+}
+span.mathtt, span.texttt {
+ font-family: monospace;
+}
+span.text, span.textnormal,
+span.mathsf, span.mathtt, span.mathrm {
+ font-style: normal;
+}
+span.fraktur {
+ font-family: "Lucida Blackletter", eufm10, blackletter;
+}
+span.blackboard {
+ font-family: Blackboard, msbm10, serif;
+}
+span.scriptfont {
+ font-family: "Monotype Corsiva", "Apple Chancery", "URW Chancery L", cursive;
+ font-style: italic;
+}
+span.mathscr {
+ font-family: MathJax_Script, rsfs10, cursive;
+ font-style: italic;
+}
+span.textsc {
+ font-variant: small-caps;
+}
+span.textsl {
+ font-style: oblique;
+}
+
+/* Colors */
+span.colorbox {
+ display: inline-block;
+ padding: 5px;
+}
+span.fbox {
+ display: inline-block;
+ border: thin solid black;
+ padding: 2px;
+}
+span.boxed, span.framebox {
+ display: inline-block;
+ border: thin solid black;
+ padding: 5px;
+}
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/minimal.css b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/minimal.css
new file mode 100644
index 00000000..66f0658d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/minimal.css
@@ -0,0 +1,293 @@
+/* Minimal style sheet for the HTML output of Docutils. */
+/* */
+/* :Author: Günter Milde, based on html4css1.css by David Goodger */
+/* :Id: $Id: minimal.css 9545 2024-02-17 10:37:56Z milde $ */
+/* :Copyright: © 2015, 2021 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+
+/* This CSS3 stylesheet defines rules for Docutils elements without */
+/* HTML equivalent. It is required to make the document semantics visible. */
+/* */
+/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link */
+
+/* titles */
+p.topic-title,
+p.admonition-title,
+p.system-message-title {
+ font-weight: bold;
+}
+p.sidebar-title,
+p.rubric {
+ font-weight: bold;
+ font-size: larger;
+}
+p.rubric {
+ color: maroon;
+}
+p.subtitle,
+p.section-subtitle,
+p.sidebar-subtitle {
+ font-weight: bold;
+ margin-top: -0.5em;
+}
+h1 + p.subtitle {
+ font-size: 1.6em;
+}
+a.toc-backref {
+ color: inherit;
+ text-decoration: none;
+}
+
+/* Warnings, Errors */
+.system-messages h2,
+.system-message-title,
+pre.problematic,
+span.problematic {
+ color: red;
+}
+
+/* Inline Literals */
+.docutils.literal {
+ font-family: monospace;
+ white-space: pre-wrap;
+}
+/* do not wrap at hyphens and similar: */
+.literal > span.pre { white-space: nowrap; }
+
+/* keep line-breaks (\n) visible */
+.pre-wrap { white-space: pre-wrap; }
+
+/* Lists */
+
+/* compact and simple lists: no margin between items */
+.simple li, .simple ul, .simple ol,
+.compact li, .compact ul, .compact ol,
+.simple > li p, dl.simple > dd,
+.compact > li p, dl.compact > dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+/* Nested Paragraphs */
+p:first-child { margin-top: 0; }
+p:last-child { margin-bottom: 0; }
+details > p:last-child { margin-bottom: 1em; }
+
+/* Table of Contents */
+.contents ul.auto-toc { /* section numbers present */
+ list-style-type: none;
+}
+
+/* Enumerated Lists */
+ol.arabic { list-style: decimal }
+ol.loweralpha { list-style: lower-alpha }
+ol.upperalpha { list-style: upper-alpha }
+ol.lowerroman { list-style: lower-roman }
+ol.upperroman { list-style: upper-roman }
+
+/* Definition Lists and Derivatives */
+dt .classifier { font-style: italic }
+dt .classifier:before {
+ font-style: normal;
+ margin: 0.5em;
+ content: ":";
+}
+/* Field Lists and similar */
+/* bold field name, content starts on the same line */
+dl.field-list,
+dl.option-list,
+dl.docinfo {
+ display: flow-root;
+}
+dl.field-list > dt,
+dl.option-list > dt,
+dl.docinfo > dt {
+ font-weight: bold;
+ clear: left;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.25em;
+}
+/* Offset for field content (corresponds to the --field-name-limit option) */
+dl.field-list > dd,
+dl.option-list > dd,
+dl.docinfo > dd {
+ margin-left: 9em; /* ca. 14 chars in the test examples, fit all Docinfo fields */
+}
+/* start nested lists on new line */
+dd > dl:first-child,
+dd > ul:first-child,
+dd > ol:first-child {
+ clear: left;
+}
+/* start field-body on a new line after long field names */
+dl.field-list > dd > *:first-child,
+dl.option-list > dd > *:first-child
+{
+ display: inline-block;
+ width: 100%;
+ margin: 0;
+}
+
+/* Bibliographic Fields (docinfo) */
+dl.docinfo pre.address {
+ font: inherit;
+ margin: 0.5em 0;
+}
+dl.docinfo > dd.authors > p { margin: 0; }
+
+/* Option Lists */
+dl.option-list > dt { font-weight: normal; }
+span.option { white-space: nowrap; }
+
+/* Footnotes and Citations */
+
+.footnote, .citation { margin: 1em 0; } /* default paragraph skip (Firefox) */
+/* hanging indent */
+.citation { padding-left: 2em; }
+.footnote { padding-left: 1.7em; }
+.footnote.superscript { padding-left: 1.0em; }
+.citation > .label { margin-left: -2em; }
+.footnote > .label { margin-left: -1.7em; }
+.footnote.superscript > .label { margin-left: -1.0em; }
+
+.footnote > .label + *,
+.citation > .label + * {
+ display: inline-block;
+ margin-top: 0;
+ vertical-align: top;
+}
+.footnote > .backrefs + *,
+.citation > .backrefs + * {
+ margin-top: 0;
+}
+.footnote > .label + p, .footnote > .backrefs + p,
+.citation > .label + p, .citation > .backrefs + p {
+ display: inline;
+ vertical-align: inherit;
+}
+
+.backrefs { user-select: none; }
+.backrefs > a { font-style: italic; }
+
+/* superscript footnotes */
+a[role="doc-noteref"].superscript,
+.footnote.superscript > .label,
+.footnote.superscript > .backrefs {
+ vertical-align: super;
+ font-size: smaller;
+ line-height: 1;
+}
+a[role="doc-noteref"].superscript > .fn-bracket,
+.footnote.superscript > .label > .fn-bracket {
+ /* hide brackets in display but leave for copy/paste */
+ display: inline-block;
+ width: 0;
+ overflow: hidden;
+}
+[role="doc-noteref"].superscript + [role="doc-noteref"].superscript {
+ padding-left: 0.15em; /* separate consecutive footnote references */
+ /* TODO: unfortunately, "+" also selects with text between the references. */
+}
+
+/* Alignment */
+.align-left {
+ text-align: left;
+ margin-right: auto;
+}
+.align-center {
+ text-align: center;
+ margin-left: auto;
+ margin-right: auto;
+}
+.align-right {
+ text-align: right;
+ margin-left: auto;
+}
+.align-top { vertical-align: top; }
+.align-middle { vertical-align: middle; }
+.align-bottom { vertical-align: bottom; }
+
+/* reset inner alignment in figures and tables */
+figure.align-left, figure.align-right,
+table.align-left, table.align-center, table.align-right {
+ text-align: inherit;
+}
+
+/* Text Blocks */
+.topic { margin: 1em 2em; }
+.sidebar,
+.admonition,
+.system-message {
+ margin: 1em 2em;
+ border: thin solid;
+ padding: 0.5em 1em;
+}
+div.line-block { display: block; }
+div.line-block div.line-block, pre { margin-left: 2em; }
+
+/* Code line numbers: dropped when copying text from the page */
+pre.code .ln { display: none; }
+pre.code code:before {
+ content: attr(data-lineno); /* …, none) fallback not supported by any browser */
+ color: gray;
+}
+
+/* Tables */
+table {
+ border-collapse: collapse;
+}
+td, th {
+ border: thin solid silver;
+ padding: 0 1ex;
+}
+.borderless td, .borderless th {
+ border: 0;
+ padding: 0;
+ padding-right: 0.5em /* separate table cells */
+}
+
+table > caption, figcaption {
+ text-align: left;
+ margin-top: 0.2em;
+ margin-bottom: 0.2em;
+}
+table.captionbelow {
+ caption-side: bottom;
+}
+
+/* MathML (see "math.css" for --math-output=HTML) */
+math .boldsymbol { font-weight: bold; }
+math.boxed, math .boxed {padding: 0.25em; border: thin solid; }
+/* style table similar to AMS "align" or "aligned" environment: */
+mtable.cases > mtr > mtd { text-align: left; }
+mtable.ams-align > mtr > mtd { padding-left: 0; padding-right: 0; }
+mtable.ams-align > mtr > mtd:nth-child(2n) { text-align: left; }
+mtable.ams-align > mtr > mtd:nth-child(2n+1) { text-align: right; }
+mtable.ams-align > mtr > mtd:nth-child(2n+3) { padding-left: 2em; }
+.mathscr mi, mi.mathscr {
+ font-family: STIX, XITSMathJax_Script, rsfs10,
+ "Asana Math", Garamond, cursive;
+}
+
+/* Document Header and Footer */
+header { border-bottom: 1px solid black; }
+footer { border-top: 1px solid black; }
+
+/* Images are block-level by default in Docutils */
+/* New HTML5 block elements: set display for older browsers */
+img, svg, header, footer, main, aside, nav, section, figure, video, details {
+ display: block;
+}
+svg { width: auto; height: auto; } /* enable scaling of SVG images */
+/* inline images */
+p img, p svg, p video { display: inline; }
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/plain.css b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/plain.css
new file mode 100644
index 00000000..f0f089bb
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/plain.css
@@ -0,0 +1,307 @@
+/* CSS31_ style sheet for the output of Docutils HTML writers. */
+/* Rules for easy reading and pre-defined style variants. */
+/* */
+/* :Author: Günter Milde, based on html4css1.css by David Goodger */
+/* :Id: $Id: plain.css 9615 2024-04-06 13:28:15Z milde $ */
+/* :Copyright: © 2015 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+/* .. _CSS3: https://www.w3.org/Style/CSS/ */
+
+
+/* Document Structure */
+/* ****************** */
+
+/* "page layout" */
+body {
+ margin: 0;
+ background-color: #dbdbdb;
+ --field-indent: 9em; /* default indent of fields in field lists */
+}
+main, footer, header {
+ line-height:1.6;
+ /* avoid long lines --> better reading */
+ /* optimum is 45…75 characters/line <http://webtypography.net/2.1.2> */
+ /* OTOH: lines should not be too short because of missing hyphenation, */
+ max-width: 50rem;
+ padding: 1px 2%; /* 1px on top avoids grey bar above title (mozilla) */
+ margin: auto;
+}
+main {
+ counter-reset: table figure;
+ background-color: white;
+}
+footer, header {
+ font-size: smaller;
+ padding: 0.5em 2%;
+ border: none;
+}
+
+/* Table of Contents */
+ul.auto-toc > li > p {
+ padding-left: 1em;
+ text-indent: -1em;
+}
+nav.contents ul {
+ padding-left: 1em;
+}
+main > nav.contents ul ul ul ul:not(.auto-toc) {
+ list-style-type: '\2B29\ ';
+}
+main > nav.contents ul ul ul ul ul:not(.auto-toc) {
+ list-style-type: '\2B1D\ ';
+}
+
+/* Transitions */
+hr.docutils {
+ width: 80%;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ clear: both;
+}
+
+/* Paragraphs */
+
+/* vertical space (parskip) */
+p, ol, ul, dl, li,
+.footnote, .citation,
+div > math,
+table {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+h1, h2, h3, h4, h5, h6,
+dd, details > p:last-child {
+ margin-bottom: 0.5em;
+}
+
+/* Lists */
+/* ===== */
+
+/* Definition Lists */
+/* Indent lists nested in definition lists */
+dd > ul:only-child, dd > ol:only-child { padding-left: 1em; }
+
+/* Description Lists */
+/* styled like in most dictionaries, encyclopedias etc. */
+dl.description {
+ display: flow-root;
+}
+dl.description > dt {
+ font-weight: bold;
+ clear: left;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.3em;
+}
+dl.description > dd:after {
+ display: table;
+ content: "";
+ clear: left; /* clearfix for empty descriptions */
+}
+
+/* Field Lists */
+
+dl.field-list > dd,
+dl.docinfo > dd {
+ margin-left: var(--field-indent); /* adapted in media queries or HTML */
+}
+
+/* example for custom field-name width */
+dl.field-list.narrow > dd {
+ --field-indent: 5em;
+}
+/* run-in: start field-body on same line after long field names */
+dl.field-list.run-in > dd p {
+ display: block;
+}
+
+/* Bibliographic Fields */
+
+/* generally, bibliographic fields use dl.docinfo */
+/* but dedication and abstract are placed into divs */
+div.abstract p.topic-title {
+ text-align: center;
+}
+div.dedication {
+ margin: 2em 5em;
+ text-align: center;
+ font-style: italic;
+}
+div.dedication p.topic-title {
+ font-style: normal;
+}
+
+/* disclosures */
+details { padding-left: 1em; }
+summary { margin-left: -1em; }
+
+/* Text Blocks */
+/* =========== */
+
+/* Literal Blocks */
+pre.literal-block, pre.doctest-block,
+pre.math, pre.code {
+ font-family: monospace;
+}
+
+/* Block Quotes and Topics */
+bockquote { margin: 1em 2em; }
+blockquote p.attribution,
+.topic p.attribution {
+ text-align: right;
+ margin-left: 20%;
+}
+
+/* Tables */
+/* ====== */
+
+/* th { vertical-align: bottom; } */
+
+table tr { text-align: left; }
+
+/* "booktabs" style (no vertical lines) */
+table.booktabs {
+ border: 0;
+ border-top: 2px solid;
+ border-bottom: 2px solid;
+ border-collapse: collapse;
+}
+table.booktabs * {
+ border: 0;
+}
+table.booktabs th {
+ border-bottom: thin solid;
+}
+
+/* numbered tables (counter defined in div.document) */
+table.numbered > caption:before {
+ counter-increment: table;
+ content: "Table " counter(table) ": ";
+ font-weight: bold;
+}
+
+/* Explicit Markup Blocks */
+/* ====================== */
+
+/* Footnotes and Citations */
+/* ----------------------- */
+
+/* line on the left */
+.footnote-list {
+ border-left: solid thin;
+ padding-left: 0.25em;
+}
+
+/* Directives */
+/* ---------- */
+
+/* Body Elements */
+/* ~~~~~~~~~~~~~ */
+
+/* Images and Figures */
+
+/* let content flow to the side of aligned images and figures */
+figure.align-left,
+img.align-left,
+svg.align-left,
+video.align-left,
+div.align-left,
+object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+figure.align-right,
+img.align-right,
+svg.align-right,
+video.align-right,
+div.align-right,
+object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+/* Stop floating sidebars, images and figures */
+h1, h2, h3, h4, footer, header { clear: both; }
+
+/* Numbered figures */
+figure.numbered > figcaption > p:before {
+ counter-increment: figure;
+ content: "Figure " counter(figure) ": ";
+ font-weight: bold;
+}
+
+/* Admonitions and System Messages */
+.caution p.admonition-title,
+.attention p.admonition-title,
+.danger p.admonition-title,
+.error p.admonition-title,
+.warning p.admonition-title,
+div.error {
+ color: red;
+}
+
+/* Sidebar */
+/* Move right. In a layout with fixed margins, */
+/* it can be moved into the margin. */
+aside.sidebar {
+ width: 30%;
+ max-width: 26em;
+ float: right;
+ clear: right;
+ margin-left: 1em;
+ margin-right: -1%;
+ background-color: #fffffa;
+}
+
+
+/* Code */
+pre.code { padding: 0.7ex }
+pre.code, code { background-color: #eeeeee }
+/* basic highlighting: for a complete scheme, see */
+/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
+pre.code .comment, code .comment { color: #5C6576 }
+pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
+pre.code .literal.string, code .literal.string { color: #0C5404 }
+pre.code .name.builtin, code .name.builtin { color: #352B84 }
+pre.code .deleted, code .deleted { background-color: #DEB0A1}
+pre.code .inserted, code .inserted { background-color: #A3D289}
+
+
+/* Epigraph */
+/* Highlights */
+/* Pull-Quote */
+/* Compound Paragraph */
+/* Container */
+
+/* Inline Markup */
+/* ============= */
+
+sup, sub { line-height: 0.8; } /* do not add leading for lines with sup/sub */
+
+/* Inline Literals */
+/* possible values: normal, nowrap, pre, pre-wrap, pre-line */
+/* span.docutils.literal { white-space: pre-wrap; } */
+
+/* Hyperlink References */
+a { text-decoration: none; }
+
+/* External Targets */
+/* span.target.external */
+/* Internal Targets */
+/* span.target.internal */
+/* Footnote References */
+/* a[role="doc-noteref"] */
+/* Citation References */
+/* a.citation-reference */
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/responsive.css b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/responsive.css
new file mode 100644
index 00000000..234fa90b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/responsive.css
@@ -0,0 +1,486 @@
+/* CSS3_ style sheet for the output of Docutils HTML5 writer. */
+/* Generic responsive design for all screen sizes. */
+/* */
+/* :Author: Günter Milde */
+/* */
+/* :Id: $Id: responsive.css 9615 2024-04-06 13:28:15Z milde $ */
+/* :Copyright: © 2021 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+/* .. _CSS3: https://www.w3.org/Style/CSS/ */
+
+/* Note: */
+/* This style sheet is provisional: */
+/* the API is not settled and may change with any minor Docutils version. */
+
+
+
+/* General Settings */
+/* ================ */
+
+
+* { box-sizing: border-box; }
+
+body {
+ background-color: #fafaf6;
+ margin: auto;
+ --field-indent: 6.6em; /* indent of fields in field lists */
+ --sidebar-margin-right: 0; /* adapted in media queries below */
+}
+main {
+ counter-reset: figure table;
+}
+body > * {
+ background-color: white;
+ line-height: 1.6;
+ padding: 0.5rem calc(29% - 7.2rem); /* go from 5% to 15% (8.15em/54em) */
+ margin: auto;
+ max-width: 100rem;
+}
+sup, sub { /* avoid additional inter-line space for lines with sup/sub */
+ line-height: 1;
+}
+
+/* Vertical Space (Parskip) */
+p, ol, ul, dl, li,
+.topic,
+.footnote, .citation,
+div > math,
+table {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+h1, h2, h3, h4, h5, h6,
+dl > dd, details > p:last-child {
+ margin-bottom: 0.5em;
+}
+
+/* Indented Blocks */
+blockquote, figure, .topic {
+ margin: 1em 2%;
+ padding-left: 1em;
+}
+div.line-block div.line-block,
+pre, dd, dl.option-list {
+ margin-left: calc(2% + 1em);
+}
+
+/* Object styling */
+/* ============== */
+
+footer, header {
+ font-size: small;
+}
+
+/* Frontmatter */
+div.dedication {
+ padding: 0;
+ margin: 1.4em 0;
+ font-style: italic;
+ font-size: large;
+}
+.dedication p.topic-title {
+ display: none;
+}
+
+blockquote p.attribution,
+.topic p.attribution {
+ text-align: right;
+}
+
+/* Table of Contents */
+nav.contents ul {
+ padding-left: 1em;
+}
+ul.auto-toc > li > p { /* hanging indent */
+ padding-left: 1em;
+ text-indent: -1em;
+}
+main > nav.contents ul:not(.auto-toc) {
+ list-style-type: square;
+}
+main > nav.contents ul ul:not(.auto-toc) {
+ list-style-type: disc;
+}
+main > nav.contents ul ul ul:not(.auto-toc) {
+ list-style-type: '\2B29\ ';
+}
+main > nav.contents ul ul ul ul:not(.auto-toc) {
+ list-style-type: '\2B1D\ ';
+}
+main > nav.contents ul ul ul ul ul:not(.auto-toc) {
+ list-style-type: '\2B2A\ ';
+}
+nav.contents ul > li::marker {
+ color: grey;
+}
+
+/* Transitions */
+hr {
+ margin: 1em 10%;
+}
+
+/* Lists */
+
+dl.field-list.narrow, dl.docinfo, dl.option-list {
+ --field-indent: 2.4em;
+}
+
+ul, ol {
+ padding-left: 1.1em; /* indent by bullet width (Firefox, DejaVu fonts) */
+}
+dl.field-list > dd,
+dl.docinfo > dd {
+ margin-left: var(--field-indent); /* adapted in media queries or HTML */
+}
+dl.option-list > dd {
+ margin-left: 20%;
+}
+/* run-in: start field-body on same line after long field names */
+dl.field-list.run-in > dd p {
+ display: block;
+}
+/* "description style" like in most dictionaries, encyclopedias etc. */
+dl.description {
+ display: flow-root;
+}
+dl.description > dt {
+ clear: left;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.3em;
+ font-weight: bold;
+}
+dl.description > dd:after {
+ display: table;
+ content: "";
+ clear: left; /* clearfix for empty descriptions */
+}
+/* start lists nested in description/field lists on new line */
+dd > dl:first-child,
+dd > ul:first-child,
+dd > ol:first-child {
+ clear: left;
+}
+
+/* disclosures */
+details { padding-left: 1em; }
+summary { margin-left: -1em; }
+
+/* Footnotes and Citations */
+.footnote {
+ font-size: small;
+}
+
+/* Images, Figures, and Tables */
+figcaption,
+table > caption {
+ /* font-size: small; */
+ font-style: italic;
+}
+figcaption > .legend {
+ font-size: small;
+ font-style: initial;
+}
+figure.numbered > figcaption > p:before {
+ counter-increment: figure;
+ content: "Figure " counter(figure) ": ";
+ font-weight: bold;
+ font-style: initial;
+}
+
+table tr {
+ text-align: left;
+ vertical-align: baseline;
+}
+table.booktabs { /* "booktabs" style (no vertical lines) */
+ border-top: 2px solid;
+ border-bottom: 2px solid;
+}
+table.booktabs * {
+ border: 0;
+}
+table.booktabs th {
+ border-bottom: thin solid;
+}
+table.numbered > caption:before {
+ counter-increment: table;
+ content: "Table " counter(table) ": ";
+ font-weight: bold;
+ font-style: initial;
+}
+
+/* Admonitions and System Messages */
+.admonition,
+div.system-message {
+ border: thin solid silver;
+ margin: 1em 2%;
+ padding: 0.5em 1em;
+}
+.caution p.admonition-title,
+.attention p.admonition-title,
+.danger p.admonition-title,
+.warning p.admonition-title,
+div.error {
+ color: maroon;
+}
+div.system-message > p > span.literal {
+ overflow-wrap: break-word;
+}
+
+/* Literal and Code */
+pre.literal-block, pre.doctest{
+ padding: 0.2em;
+ overflow-x: auto;
+}
+.literal-block, .doctest, span.literal {
+ background-color: #f6f9f8;
+}
+.system-message span.literal {
+ background-color: inherit;
+}
+
+/* basic highlighting: for a complete scheme, see */
+/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
+pre.code .comment, code .comment { color: #5C6576 }
+pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
+pre.code .literal.string, code .literal.string { color: #0C5404 }
+pre.code .name.builtin, code .name.builtin { color: #352B84 }
+pre.code .deleted, code .deleted { background-color: #DEB0A1}
+pre.code .inserted, code .inserted { background-color: #A3D289}
+
+/* Hyperlink References */
+a {
+ text-decoration: none; /* for chromium */
+ /* Wrap links at any place, if this is the only way to prevent overflow */
+ overflow-wrap: break-word;
+}
+.contents a, a.toc-backref, a.citation-reference {
+ overflow-wrap: inherit;
+}
+/* Undecorated Links (see also minimal.css) */
+/* a.citation-reference, */
+.citation a.fn-backref {
+ color: inherit;
+}
+a:hover {
+ text-decoration: underline;
+}
+*:hover > a.toc-backref:after,
+.topic-title:hover > a:after {
+ content: " \2191"; /* ↑ UPWARDS ARROW */
+ color: grey;
+}
+*:hover > a.self-link:after {
+ content: "\1F517"; /* LINK SYMBOL */
+ color: grey;
+ font-size: smaller;
+ margin-left: 0.2em;
+}
+/* highlight specific targets of the current URL */
+section:target > h2, section:target > h3, section:target > h4,
+section:target > h5, section:target > h6,
+span:target + h2, span:target + h3, span:target + h4,
+span:target + h5, span:target + h6,
+dt:target, span:target,
+.contents :target,
+.contents:target > .topic-title,
+[role="doc-biblioentry"]:target > .label,
+[role="doc-biblioref"]:target,
+[role="note"]:target, /* Docutils 0.18 ... 0.19 */
+[role="doc-footnote"]:target, /* Docutils >= 0.20 */
+[role="doc-noteref"]:target {
+ background-color: #d2e6ec;
+}
+
+/* Block Alignment */
+/* Let content flow to the side of aligned images and figures */
+
+/* no floats around this elements */
+footer, header, hr,
+h1, h2, h3 {
+ clear: both;
+}
+
+img.align-left,
+svg.align-left,
+video.align-left,
+figure.align-left,
+div.align-left,
+table.align-left {
+ margin-left: 0;
+ padding-left: 0;
+ margin-right: 0.5em;
+ clear: left;
+ float: left;
+}
+img.align-right,
+svg.align-right,
+video.align-right,
+figure.align-right,
+div.align-right,
+table.align-right {
+ margin-left: 0.5em;
+ margin-right: 0;
+ clear: right;
+ float: right;
+}
+
+/* Margin Elements */
+/* see below for screen size dependent rules */
+.sidebar,
+.marginal,
+.admonition.marginal {
+ max-width: 40%;
+ border: none;
+ background-color: #efefea;
+ margin: 0.5em var(--sidebar-margin-right) 0.5em 1em;
+ padding: 0.5em;
+ padding-left: 0.7em;
+ clear: right;
+ float: right;
+ font-size: small;
+}
+.sidebar {
+ width: 40%;
+}
+
+/* Adaptive page layout */
+/* ==================== */
+
+@media (max-width: 30em) {
+ /* Smaller margins and no floating elements for small screens */
+ /* (main text less than 40 characters/line) */
+ body > * {
+ padding: 0.5rem 5%;
+ line-height: 1.4
+ }
+ .sidebar,
+ .marginal,
+ .admonition.marginal {
+ width: auto;
+ max-width: 100%;
+ float: none;
+ }
+ dl.option-list,
+ pre {
+ margin-left: 0;
+ }
+ body {
+ --field-indent: 4em;
+ }
+ pre, pre * {
+ font-size: 0.9em;
+ /* overflow: auto; */
+ }
+}
+
+@media (min-width: 54em) {
+ /* Move ToC to the left */
+ /* Main text width before: 70% ≙ 35em ≙ 75…95 chrs (Dejavu/Times) */
+ /* after: ≳ 30em ≙ 54…70 chrs (Dejavu/Times) */
+ body.with-toc {
+ padding-left: 8%;
+ }
+ body.with-toc > * {
+ margin-left: 0;
+ padding-left: 22rem; /* fallback for webkit */
+ padding-left: min(22%, 22rem);
+ padding-right: 7%;
+ }
+ main > nav.contents { /* global ToC */
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: min(25%, 25em);
+ height: 100vh;
+ margin: 0;
+ background-color: #fafaf6;
+ padding: 1em 2% 0 2%;
+ overflow: auto;
+ }
+ main > nav.contents > * {
+ padding-left: 0;
+ line-height: 1.4;
+ }
+ main > nav.contents a {
+ color: inherit;
+ }
+}
+
+@media (min-width: 70em) {
+ body {
+ --field-indent: 9em;
+ }
+}
+
+@media (min-width: 77em) {
+ /* Move marginalia to 6rem from right border */
+ /* .sidebar, */
+ /* .marginal, */
+ /* .admonition.marginal { */
+ /* margin-right: calc(6rem - 15%); */
+ /* } */
+ /* BUG: margin is calculated for break point width */
+ /* workaround: variable + many breakpoints */
+ body > * {
+ padding-left: 18%;
+ padding-right: 28%; /* fallback for webkit */
+ padding-right: min(28%, 28rem);
+ --sidebar-margin-right: -20rem;
+ }
+ /* limit main text to ~ 50em ≙ 85…100 characters DejaVu rsp. …120 Times */
+ body.with-toc > * {
+ padding-left: min(22%, 22rem);
+ padding-right: calc(78% - 50rem); /* fallback for webkit */
+ padding-right: min(78% - 50rem, 28rem);
+ --sidebar-margin-right: 0;
+ }
+}
+
+@media (min-width: 85em) {
+ body.with-toc > * {
+ --sidebar-margin-right: -9rem;
+ }
+}
+
+@media (min-width: 90em) {
+ /* move marginalia into the margin */
+ body > * {
+ padding-left: min(22%, 22rem);
+ --sidebar-margin-right: -23rem;
+ }
+ body.with-toc > * {
+ --sidebar-margin-right: -14rem;
+ }
+}
+
+@media (min-width: 99em) {
+ /* move marginalia out of main text area */
+ body.with-toc > * {
+ --sidebar-margin-right: -20rem;
+ }
+ body > *, body.with-toc > * { /* for webkit */
+ padding-left: 22rem;
+ padding-right: 28rem;
+ }
+ .admonition.marginal,
+ .marginal {
+ width: 40%; /* make marginal figures, ... "full width" */
+ }
+}
+
+@media (min-width: 104em) {
+ body.with-toc > * {
+ --sidebar-margin-right: -23rem;
+ }
+}
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/template.txt b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/template.txt
new file mode 100644
index 00000000..2591bce3
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/template.txt
@@ -0,0 +1,8 @@
+%(head_prefix)s
+%(head)s
+%(stylesheet)s
+%(body_prefix)s
+%(body_pre_docinfo)s
+%(docinfo)s
+%(body)s
+%(body_suffix)s
diff --git a/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/tuftig.css b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/tuftig.css
new file mode 100644
index 00000000..cdedfded
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/writers/html5_polyglot/tuftig.css
@@ -0,0 +1,566 @@
+/* CSS3_ style sheet for the output of Docutils HTML writers. */
+/* Rules inspired by Edward Tufte's layout design. */
+/* */
+/* :Author: Günter Milde */
+/* based on tufte.css_ by Dave Liepmann */
+/* and the tufte-latex_ package. */
+/* */
+/* :Id: $Id: tuftig.css 9503 2023-12-16 22:37:59Z milde $ */
+/* :Copyright: © 2020 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+/* .. _CSS3: https://www.w3.org/Style/CSS/ */
+/* .. _tufte.css: https://edwardtufte.github.io/tufte-css/ */
+/* .. _tufte-latex_: https://www.ctan.org/pkg/tufte-latex */
+
+
+/* General Settings */
+/* ================ */
+
+body {
+ font-family: Georgia, serif;
+ background-color: #fafaf6;
+ font-size: 1.2em;
+ line-height: 1.4;
+ margin: auto;
+}
+main {
+ counter-reset: figure table;
+}
+main, header, footer {
+ padding: 0.5em 5%;
+ background-color: #fefef8;
+ max-width: 100rem;
+}
+
+/* Spacing */
+
+/* vertical space (parskip) */
+p, ol, ul, dl, li,
+h1, h2, h3, h4, h5, h6,
+div.line-block,
+.topic,
+.footnote, .citation,
+table {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+dl > dd {
+ margin-bottom: 0.5em;
+}
+/* exceptions */
+p:first-child {
+ margin-top: 0;
+}
+p:last-child {
+ margin-bottom: 0;
+}
+
+/* Indented Blocks */
+blockquote,
+.topic {
+ /* background-color: Honeydew; */
+ margin: 0.5em 2%;
+ padding-left: 1em;
+}
+div.line-block div.line-block,
+dl.option-list,
+figure > img,
+pre.literal-block, pre.math,
+pre.doctest-block, pre.code {
+ /* background-color: LightCyan; */
+ margin-left: calc(2% + 1em);
+}
+
+/* Object styling */
+/* ============== */
+
+footer, header {
+ font-size: smaller;
+}
+
+/* Titles and Headings */
+
+h2, h3, h4, p.subtitle, p.section-subtitle,
+p.topic-title, p.sidebar-title, p.sidebar-subtitle {
+ font-weight: normal;
+ font-style: italic;
+ text-align: left;
+}
+.sectnum {
+ font-style: normal;
+}
+
+h1.title {
+ text-align: left;
+ margin-top: 2.4em;
+ margin-bottom: 2em;
+ font-size: 2.4em;
+}
+h1 + p.subtitle {
+ margin-top: -2em;
+ margin-bottom: 2em;
+ font-size: 2.0em;
+}
+section {
+ margin-top: 2em;
+}
+h2, .contents > p.topic-title {
+ font-size: 2.2em;
+}
+h2 + p.section-subtitle {
+ font-size: 1.6em;
+}
+h3 {
+ font-size: 1.2em;
+}
+h3 + p.section-subtitle {
+ font-size: 1.1em;
+}
+h4 {
+ font-size: 1em;
+}
+p.section-subtitle {
+ font-size: 1em;
+}
+
+/* Dedication and Abstract */
+div.dedication {
+ padding: 0;
+ margin-left: 0;
+ font-style: italic;
+ font-size: 1.2em;
+}
+/* div.abstract p.topic-title, */
+div.dedication p.topic-title {
+ display: none;
+}
+
+/* Attribution */
+blockquote p.attribution,
+.topic p.attribution {
+ text-align: right;
+}
+
+/* Table of Contents */
+nav.contents {
+ padding: 0;
+ font-style: italic;
+}
+ul.auto-toc > li > p {
+ padding-left: 1em;
+ text-indent: -1em;
+}
+nav.contents ul {
+ padding-left: 1em;
+}
+
+
+/* Transitions */
+hr {
+ border: 0;
+ border-top: 1px solid #ccc;
+ margin: 1em 10%;
+}
+
+/* Lists */
+/* Less indent per level */
+ul, ol {
+ padding-left: 1.1em;
+}
+dd {
+ margin-left: 1.5em;
+}
+dd > dl:first-child,
+dd > ul:first-child,
+dd > ol:first-child {
+ /* lists nested in definition/description/field lists */
+ clear: left;
+}
+
+dl.field-list > dd,
+dl.docinfo > dd,
+dl.option-list > dd {
+ margin-left: 4em;
+}
+/* example for custom field-name width */
+dl.field-list.narrow > dd {
+ margin-left: 3em;
+}
+/* run-in: start field-body on same line after long field names */
+dl.field-list.run-in > dd p {
+ display: block;
+}
+/* italic field name */
+dl.description > dt,
+dl.field-list > dt,
+dl.docinfo > dt {
+ font-weight: normal;
+ font-style: italic;
+}
+
+/* "description style" like in most dictionaries, encyclopedias etc. */
+dl.description > dt {
+ clear: left;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.5em;
+}
+dl.description > dd:after {
+ display: block;
+ content: "";
+ clear: both;
+}
+
+/* Citation list (style as description list) */
+.citation-list,
+.footnote-list {
+ display: contents;
+}
+.citation {
+ padding-left: 1.5em;
+}
+.citation .label {
+ margin-left: -1.5em;
+}
+
+/* Images and Figures */
+/* Caption to the left (if there is space) or below: */
+figure {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: flex-start;
+ margin: 0.5em 2%;
+ padding-left: 1em;
+}
+figure > img,
+figure.fullwidth > img {
+ margin: 0 0.5em 0.5em 0;
+ padding: 0;
+}
+figcaption {
+ font-size: 0.8em;
+}
+.fullwidth > figcaption {
+ font-size: inherit;
+}
+figure.numbered > figcaption > p:before {
+ counter-increment: figure;
+ content: "Figure " counter(figure) ": ";
+}
+
+/* Tables */
+table tr {
+ text-align: left;
+}
+/* th { vertical-align: bottom; } */
+/* "booktabs" style (no vertical lines) */
+table.booktabs {
+ border-top: 2px solid;
+ border-bottom: 2px solid;
+}
+table.booktabs * {
+ border: 0;
+}
+table.booktabs th {
+ border-bottom: thin solid;
+}
+table.numbered > caption:before {
+ counter-increment: table;
+ content: "Table " counter(table) ": ";
+}
+
+/* Admonitions and System Messages */
+.admonition, .system-message {
+ border-style: solid;
+ border-color: silver;
+ border-width: thin;
+ margin: 1em 0;
+ padding: 0.5em;
+}
+.caution p.admonition-title,
+.attention p.admonition-title,
+.danger p.admonition-title,
+.warning p.admonition-title,
+div.error {
+ color: maroon;
+}
+
+/* Literal and Code */
+pre.literal-block, pre.doctest-block,
+pre.math, pre.code {
+ /* font-family: Consolas, "Liberation Mono", Menlo, monospace; */
+ /* font-size: 0.9em; */
+ overflow: auto;
+}
+/* basic highlighting: for a complete scheme, see */
+/* https://docutils.sourceforge.io/sandbox/stylesheets/ */
+pre.code .comment, code .comment { color: #5C6576 }
+pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
+pre.code .literal.string, code .literal.string { color: #0C5404 }
+pre.code .name.builtin, code .name.builtin { color: #352B84 }
+pre.code .deleted, code .deleted { background-color: #DEB0A1}
+pre.code .inserted, code .inserted { background-color: #A3D289}
+
+.sans {
+ font-family: "Gill Sans", "Gill Sans MT", Calibri, "Lucida Sans", "Noto Sans", sans-serif;
+ letter-spacing: .02em;
+}
+
+/* Hyperlink References */
+/* underline that clears descenders */
+a {
+ color: inherit;
+}
+a:link {
+ text-decoration: underline;
+ /* text-decoration-skip-ink: auto; nonstandard selector */
+}
+/* undecorated links */
+.contents a:link, a.toc-backref:link, a.image-reference:link,
+a[role="doc-noteref"]:link, a[role="doc-backlink"]:link, .backrefs a:link,
+a.citation-reference:link,
+a[href^="#system-message"] {
+ text-decoration: none;
+}
+a:link:hover {
+ text-decoration: underline;
+}
+
+/* Block Alignment */
+/* Let content flow to the side of aligned images and figures */
+/* (does not work if the image/figure is a grid element). */
+
+/* no floats around this elements */
+footer, header,
+hr.docutils,
+h1, h2, h3, .contents > p.topic-title,
+.fullwidth {
+ clear: both;
+}
+
+img.align-left,
+svg.align-left,
+video.align-left,
+figure.align-left,
+div.align-left,
+table.align-left {
+ margin-left: 0;
+ padding-left: 0;
+ padding-right: 0.5em;
+ clear: left;
+ float: left;
+}
+figure.align-left > img {
+ margin-left: 0;
+ padding-left: 0;
+}
+
+img.align-right,
+svg.align-right,
+video.align-right,
+div.align-right {
+ padding-left: 0.5em;
+ clear: right;
+ float: right;
+}
+figure.align-right {
+ clear: right;
+ float: right;
+}
+figure.align-right > img {
+ justify-self: right;
+ padding: 0;
+}
+table.align-right {
+ margin-right: 2.5%;
+}
+
+figure.align-center {
+ align-content: center;
+ justify-content: center;
+}
+figure.align-center > img {
+ padding-left: 0;
+ justify-self: center;
+}
+
+/* Margin Elements */
+/* see below for screen size dependent rules */
+aside.sidebar,
+.marginal,
+.admonition.marginal,
+.topic.marginal {
+ background-color: #efefea;
+ box-sizing: border-box;
+ margin-left: 2%;
+ margin-right: 0;
+ padding: 0.5em;
+ font-size: 0.8em;
+}
+aside.sidebar {
+ background-color: inherit;
+}
+figure.marginal > figcaption {
+ font-size: 1em;
+}
+.footnote {
+ font-size: smaller;
+ overflow: auto;
+}
+
+/* Adaptive page layout */
+
+/* no floating for very small Screens */
+/* (main text up to ca. 40 characters/line) */
+@media (min-width: 35em) {
+ main, header, footer {
+ padding: 0.5em calc(15% - 3rem);
+ line-height: 1.6
+ }
+ aside.sidebar,
+ .marginal,
+ .admonition.marginal,
+ .topic.marginal {
+ max-width: 45%;
+ float: right;
+ clear: right;
+ }
+ dl.field-list > dd,
+ dl.docinfo > dd {
+ margin-left: 6em;
+ }
+ dl.option-list > dd {
+ margin-left: 6em;
+ }
+}
+
+/* 2 column layout with wide margin */
+@media (min-width: 65em) {
+ /* use the same grid for main, all sections, and figures */
+ main, section {
+ display: grid;
+ grid-template-columns: [content] minmax(0, 6fr)
+ [margin] 3fr [end];
+ grid-column-gap: calc(3em + 1%);
+ }
+ main > section, section > section {
+ grid-column: 1 / end;
+ }
+ main, header, footer {
+ padding-right: 5%; /* less padding right of margin-column */
+ }
+ section > figure {
+ display: contents; /* to place caption in the margin */
+ }
+ /* Main text elements */
+ main > *, section > *,
+ figure > img,
+ .footnote.align-left, /* override the placement in the margin */
+ .citation.align-left {
+ grid-column: content;
+ }
+ .citation.align-left {
+ font-size: 1em;
+ padding-left: 1.5em;
+ }
+ .citation.align-left .label {
+ margin-left: -1.5em;
+ }
+ figure > img { /* indent */
+ margin: 0.5em 2%;
+ padding-left: 1em;
+ }
+
+ /* Margin Elements */
+ /* Sidebar, Footnotes, Citations, Captions */
+ aside.sidebar,
+ .citation,
+ .footnote,
+ figcaption,
+ /* table > caption, does not work :(*/
+ .marginal,
+ .admonition.marginal,
+ .topic.marginal {
+ /* color: red; */
+ grid-column: margin;
+ width: auto;
+ max-width: 55em;
+ margin: 0.5em 0;
+ border: none;
+ padding: 0;
+ font-size: 0.8em;
+ text-align: initial; /* overwrite align-* */
+ background-color: inherit;
+ }
+ .admonition.marginal {
+ padding: 0.5em;
+ }
+ figure.marginal {
+ display: block;
+ margin: 0.5em 0;
+ }
+ .citation,
+ .footnote {
+ padding-left: 0;
+ }
+ .citation .label,
+ .footnote .label {
+ margin-left: 0;
+ }
+
+ /* Fullwidth Elements */
+ h1.title, p.subtitle,
+ dl.docinfo,
+ div.abstract,
+ div.dedication,
+ nav.contents,
+ aside.system-message,
+ pre,
+ .fullwidth,
+ .fullwidth img,
+ .fullwidth figcaption {
+ /* background-color: Linen; */
+ grid-column: content / end;
+ margin-right: calc(10% - 3rem);
+ max-width: 55em;
+ }
+}
+
+/* 3 column layout */
+
+@media (min-width: 100em) {
+ main, header, footer {
+ padding-left: 30%;
+ }
+ main > nav.contents {
+ position: fixed;
+ top: 0;
+ left: 0;
+ box-sizing: border-box;
+ width: 25%;
+ height: 100vh;
+ margin: 0;
+ background-color: #fafaf6;
+ padding: 5.5em 2%;
+ overflow: auto;
+ }
+ main > nav.contents > * {
+ padding-left: 0;
+ }
+}
+
+/* wrap URLs */
+/* a:link { */
+/* white-space: normal; */
+/* hyphens: none; */
+/* } */