From 913b5eaad25b9ba1cf0ad8d9b25633ec454c74e5 Mon Sep 17 00:00:00 2001
From: 简律纯
Date: Thu, 27 Jul 2023 13:59:52 +0800
Subject: first push
---
.github/workflows/pages.yml | 27 +
docs/docs/blog/index.md | 0
docs/docs/changelog/index.md | 0
docs/docs/css/neoteroi-cards.css | 102 +
docs/docs/css/neoteroi-gantt.css | 328 +
docs/docs/css/neoteroi-mkdocs.css | 1399 ++++
docs/docs/css/neoteroi-mkdocs.min.css | 1 +
docs/docs/css/neoteroi-spantable.css | 56 +
docs/docs/css/neoteroi-timeline.css | 340 +
docs/docs/index.md | 19 +
docs/docs/javascripts/.gitkeep | 0
docs/docs/res/main.pdf | Bin 0 -> 54209 bytes
docs/docs/showcase/index.md | 24 +
docs/docs/stylesheets/.gitkeep | 0
docs/mkdocs.yml | 150 +
docs/overrides/.gitkeep | 0
docs/overrides/main.html | 13 +
docs/requirements.txt | 6 +
docs/site/404.html | 621 ++
docs/site/assets/images/favicon.png | Bin 0 -> 1870 bytes
.../site/assets/javascripts/bundle.220ee61c.min.js | 29 +
.../assets/javascripts/bundle.220ee61c.min.js.map | 8 +
.../assets/javascripts/lunr/min/lunr.ar.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.da.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.de.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.du.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.es.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.fi.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.fr.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.hi.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.hu.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.hy.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.it.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.ja.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.jp.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.kn.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.ko.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.multi.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.nl.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.no.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.pt.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.ro.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.ru.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.sa.min.js | 1 +
.../lunr/min/lunr.stemmer.support.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.sv.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.ta.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.te.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.th.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.tr.min.js | 18 +
.../assets/javascripts/lunr/min/lunr.vi.min.js | 1 +
.../assets/javascripts/lunr/min/lunr.zh.min.js | 1 +
docs/site/assets/javascripts/lunr/tinyseg.js | 206 +
docs/site/assets/javascripts/lunr/wordcut.js | 6708 ++++++++++++++++++++
.../javascripts/workers/search.74e28a9f.min.js | 42 +
.../javascripts/workers/search.74e28a9f.min.js.map | 8 +
docs/site/assets/stylesheets/main.eebd395e.min.css | 1 +
.../assets/stylesheets/main.eebd395e.min.css.map | 1 +
.../assets/stylesheets/palette.ecc896b0.min.css | 1 +
.../stylesheets/palette.ecc896b0.min.css.map | 1 +
docs/site/blog/index.html | 756 +++
docs/site/changelog/index.html | 765 +++
docs/site/css/timeago.css | 15 +
docs/site/index.html | 882 +++
docs/site/js/timeago.min.js | 2 +
docs/site/js/timeago_mkdocs_material.js | 18 +
docs/site/search/search_index.json | 1 +
docs/site/sitemap.xml | 3 +
docs/site/sitemap.xml.gz | Bin 0 -> 127 bytes
69 files changed, 12818 insertions(+)
create mode 100644 .github/workflows/pages.yml
create mode 100644 docs/docs/blog/index.md
create mode 100644 docs/docs/changelog/index.md
create mode 100644 docs/docs/css/neoteroi-cards.css
create mode 100644 docs/docs/css/neoteroi-gantt.css
create mode 100644 docs/docs/css/neoteroi-mkdocs.css
create mode 100644 docs/docs/css/neoteroi-mkdocs.min.css
create mode 100644 docs/docs/css/neoteroi-spantable.css
create mode 100644 docs/docs/css/neoteroi-timeline.css
create mode 100644 docs/docs/index.md
create mode 100644 docs/docs/javascripts/.gitkeep
create mode 100644 docs/docs/res/main.pdf
create mode 100644 docs/docs/showcase/index.md
create mode 100644 docs/docs/stylesheets/.gitkeep
create mode 100644 docs/mkdocs.yml
create mode 100644 docs/overrides/.gitkeep
create mode 100644 docs/overrides/main.html
create mode 100644 docs/requirements.txt
create mode 100644 docs/site/404.html
create mode 100644 docs/site/assets/images/favicon.png
create mode 100644 docs/site/assets/javascripts/bundle.220ee61c.min.js
create mode 100644 docs/site/assets/javascripts/bundle.220ee61c.min.js.map
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.ar.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.da.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.de.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.du.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.es.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.fi.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.fr.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.hi.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.hu.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.hy.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.it.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.ja.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.jp.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.kn.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.ko.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.multi.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.nl.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.no.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.pt.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.ro.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.ru.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.sa.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.sv.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.ta.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.te.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.th.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.tr.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.vi.min.js
create mode 100644 docs/site/assets/javascripts/lunr/min/lunr.zh.min.js
create mode 100644 docs/site/assets/javascripts/lunr/tinyseg.js
create mode 100644 docs/site/assets/javascripts/lunr/wordcut.js
create mode 100644 docs/site/assets/javascripts/workers/search.74e28a9f.min.js
create mode 100644 docs/site/assets/javascripts/workers/search.74e28a9f.min.js.map
create mode 100644 docs/site/assets/stylesheets/main.eebd395e.min.css
create mode 100644 docs/site/assets/stylesheets/main.eebd395e.min.css.map
create mode 100644 docs/site/assets/stylesheets/palette.ecc896b0.min.css
create mode 100644 docs/site/assets/stylesheets/palette.ecc896b0.min.css.map
create mode 100644 docs/site/blog/index.html
create mode 100644 docs/site/changelog/index.html
create mode 100644 docs/site/css/timeago.css
create mode 100644 docs/site/index.html
create mode 100644 docs/site/js/timeago.min.js
create mode 100644 docs/site/js/timeago_mkdocs_material.js
create mode 100644 docs/site/search/search_index.json
create mode 100644 docs/site/sitemap.xml
create mode 100644 docs/site/sitemap.xml.gz
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
new file mode 100644
index 00000000..eaf6a066
--- /dev/null
+++ b/.github/workflows/pages.yml
@@ -0,0 +1,27 @@
+name: ci
+on:
+ push:
+ branches:
+ - master
+ - main
+permissions:
+ contents: write
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v4
+ with:
+ python-version: 3.x
+ - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
+ - uses: actions/cache@v3
+ with:
+ key: mkdocs-material-${{ env.cache_id }}
+ path: .cache
+ restore-keys: |
+ mkdocs-material-
+ - run: |
+ cd docs
+ pip install -r requirements.txt
+ mkdocs gh-deploy --force
diff --git a/docs/docs/blog/index.md b/docs/docs/blog/index.md
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/docs/changelog/index.md b/docs/docs/changelog/index.md
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/docs/css/neoteroi-cards.css b/docs/docs/css/neoteroi-cards.css
new file mode 100644
index 00000000..5a5152f5
--- /dev/null
+++ b/docs/docs/css/neoteroi-cards.css
@@ -0,0 +1,102 @@
+.nt-cards.nt-grid {
+ display: grid;
+ grid-auto-columns: 1fr;
+ gap: 0.5rem;
+ max-width: 100vw;
+ overflow-x: auto;
+ padding: 1px;
+}
+.nt-cards.nt-grid.cols-1 {
+ grid-template-columns: repeat(1, 1fr);
+}
+.nt-cards.nt-grid.cols-2 {
+ grid-template-columns: repeat(2, 1fr);
+}
+.nt-cards.nt-grid.cols-3 {
+ grid-template-columns: repeat(3, 1fr);
+}
+.nt-cards.nt-grid.cols-4 {
+ grid-template-columns: repeat(4, 1fr);
+}
+.nt-cards.nt-grid.cols-5 {
+ grid-template-columns: repeat(5, 1fr);
+}
+.nt-cards.nt-grid.cols-6 {
+ grid-template-columns: repeat(6, 1fr);
+}
+
+@media only screen and (max-width: 400px) {
+ .nt-cards.nt-grid {
+ grid-template-columns: repeat(1, 1fr) !important;
+ }
+}
+.nt-card {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.nt-card:hover {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.24), 0 3px 1px -2px rgba(0, 0, 0, 0.3), 0 1px 5px 0 rgba(0, 0, 0, 0.22);
+}
+
+[data-md-color-scheme=slate] .nt-card {
+ box-shadow: 0 2px 2px 0 rgba(4, 40, 33, 0.14), 0 3px 1px -2px rgba(40, 86, 94, 0.47), 0 1px 5px 0 rgba(139, 252, 255, 0.64);
+}
+[data-md-color-scheme=slate] .nt-card:hover {
+ box-shadow: 0 2px 2px 0 rgba(0, 255, 206, 0.14), 0 3px 1px -2px rgba(33, 156, 177, 0.47), 0 1px 5px 0 rgba(96, 251, 255, 0.64);
+}
+
+.nt-card > a {
+ color: var(--md-default-fg-color);
+}
+
+.nt-card > a > div {
+ cursor: pointer;
+}
+
+.nt-card {
+ padding: 5px;
+ margin-bottom: 0.5rem;
+}
+
+.nt-card-title {
+ font-size: 1rem;
+ font-weight: bold;
+ margin: 4px 0 8px 0;
+ line-height: 22px;
+}
+
+.nt-card-content {
+ padding: 0.4rem 0.8rem 0.8rem 0.8rem;
+}
+
+.nt-card-text {
+ font-size: 14px;
+ padding: 0;
+ margin: 0;
+}
+
+.nt-card .nt-card-image {
+ text-align: center;
+ border-radius: 2px;
+ background-position: center center;
+ background-size: cover;
+ background-repeat: no-repeat;
+ min-height: 120px;
+}
+
+.nt-card .nt-card-image.tags img {
+ margin-top: 12px;
+}
+
+.nt-card .nt-card-image img {
+ height: 105px;
+ margin-top: 5px;
+}
+
+.nt-card a:hover,
+.nt-card a:focus {
+ color: var(--md-accent-fg-color);
+}
+
+.nt-card h2 {
+ margin: 0;
+}
diff --git a/docs/docs/css/neoteroi-gantt.css b/docs/docs/css/neoteroi-gantt.css
new file mode 100644
index 00000000..f93f202e
--- /dev/null
+++ b/docs/docs/css/neoteroi-gantt.css
@@ -0,0 +1,328 @@
+/**
+ * Extra CSS for the neoteroi.projects.gantt extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+:root {
+ --nt-scrollbar-color: #2751b0;
+ --nt-plan-actions-height: 24px;
+ --nt-units-background: #ff9800;
+ --nt-months-background: #2751b0;
+ --nt-plan-vertical-line-color: #a3a3a3ad;
+}
+
+.nt-pastello {
+ --nt-scrollbar-color: #9fb8f4;
+ --nt-units-background: #f5dc82;
+ --nt-months-background: #5b7fd1;
+}
+
+[data-md-color-scheme=slate] {
+ --nt-units-background: #003773;
+}
+[data-md-color-scheme=slate] .nt-pastello {
+ --nt-units-background: #3f4997;
+}
+
+.nt-plan-root {
+ min-height: 200px;
+ scrollbar-width: 20px;
+ scrollbar-color: var(--nt-scrollbar-color);
+ display: flex;
+}
+.nt-plan-root ::-webkit-scrollbar {
+ width: 20px;
+}
+.nt-plan-root ::-webkit-scrollbar-track {
+ box-shadow: inset 0 0 5px grey;
+ border-radius: 10px;
+}
+.nt-plan-root ::-webkit-scrollbar-thumb {
+ background: var(--nt-scrollbar-color);
+ border-radius: 10px;
+}
+.nt-plan-root .nt-plan {
+ flex: 80%;
+}
+.nt-plan-root.no-groups .nt-plan-periods {
+ padding-left: 0;
+}
+.nt-plan-root.no-groups .nt-plan-group-summary {
+ display: none;
+}
+.nt-plan-root .nt-timeline-dot.bigger {
+ top: -10px;
+}
+.nt-plan-root .nt-timeline-dot.bigger[title] {
+ cursor: help;
+}
+
+.nt-plan {
+ white-space: nowrap;
+ overflow-x: auto;
+ display: flex;
+}
+.nt-plan .ug-timeline-dot {
+ left: 368px;
+ top: -8px;
+ cursor: help;
+}
+
+.months {
+ display: flex;
+}
+
+.month {
+ flex: auto;
+ display: inline-block;
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px inset;
+ background-color: var(--nt-months-background);
+ color: white;
+ text-transform: uppercase;
+ font-family: Roboto, Helvetica, Arial, sans-serif;
+ padding: 2px 5px;
+ font-size: 12px;
+ border: 1px solid #000;
+ width: 150px;
+ border-radius: 8px;
+}
+
+.nt-plan-group-activities {
+ flex: auto;
+ position: relative;
+}
+
+.nt-vline {
+ border-left: 1px dashed var(--nt-plan-vertical-line-color);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ margin-left: -0.5px;
+ top: 0;
+ -webkit-transition: all 0.5s linear !important;
+ -moz-transition: all 0.5s linear !important;
+ -ms-transition: all 0.5s linear !important;
+ -o-transition: all 0.5s linear !important;
+ transition: all 0.5s linear !important;
+ z-index: -2;
+}
+
+.nt-plan-activity {
+ display: flex;
+ margin: 2px 0;
+ background-color: rgba(187, 187, 187, 0.2509803922);
+}
+
+.actions {
+ height: var(--nt-plan-actions-height);
+}
+
+.actions {
+ position: relative;
+}
+
+.period {
+ display: inline-block;
+ height: var(--nt-plan-actions-height);
+ width: 120px;
+ position: absolute;
+ left: 0px;
+ background: #1da1f2;
+ border-radius: 5px;
+ transition: all 0.5s;
+ cursor: help;
+ -webkit-transition: width 1s ease-in-out;
+ -moz-transition: width 1s ease-in-out;
+ -o-transition: width 1s ease-in-out;
+ transition: width 1s ease-in-out;
+}
+.period .nt-tooltip {
+ display: none;
+ top: 30px;
+ position: relative;
+ padding: 1rem;
+ text-align: center;
+ font-size: 12px;
+}
+.period:hover .nt-tooltip {
+ display: inline-block;
+}
+
+.period-0 {
+ left: 340px;
+ visibility: visible;
+ background-color: rgb(69, 97, 101);
+}
+
+.period-1 {
+ left: 40px;
+ visibility: visible;
+ background-color: green;
+}
+
+.period-2 {
+ left: 120px;
+ visibility: visible;
+ background-color: pink;
+ width: 80px;
+}
+
+.period-3 {
+ left: 190px;
+ visibility: visible;
+ background-color: darkred;
+ width: 150px;
+}
+
+.weeks > span,
+.days > span {
+ height: 25px;
+}
+
+.weeks > span {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ font-weight: bold;
+}
+.weeks > span .week-text {
+ font-size: 10px;
+ position: absolute;
+ display: inline-block;
+ padding: 3px 4px;
+}
+
+.days {
+ z-index: -2;
+ position: relative;
+}
+
+.day-text {
+ font-size: 10px;
+ position: absolute;
+ display: inline-block;
+ padding: 3px 4px;
+}
+
+.period span {
+ font-size: 12px;
+ vertical-align: top;
+ margin-left: 4px;
+ color: black;
+ background: rgba(255, 255, 255, 0.6588235294);
+ border-radius: 6px;
+ padding: 0 4px;
+}
+
+.weeks,
+.days {
+ height: 20px;
+ display: flex;
+ box-sizing: content-box;
+}
+
+.months {
+ display: flex;
+}
+
+.week,
+.day {
+ height: 20px;
+ position: relative;
+ border: 1;
+ flex: auto;
+ border: 2px solid white;
+ border-radius: 4px;
+ background-color: var(--nt-units-background);
+ cursor: help;
+}
+
+.years {
+ display: flex;
+}
+
+.year {
+ text-align: center;
+ border-right: 1px solid var(--nt-plan-vertical-line-color);
+ font-weight: bold;
+}
+.year:first-child {
+ border-left: 1px solid var(--nt-plan-vertical-line-color);
+}
+.year:first-child:last-child {
+ width: 100%;
+}
+
+.quarters {
+ display: flex;
+}
+
+.quarter {
+ width: 12.5%;
+ text-align: center;
+ border-right: 1px solid var(--nt-plan-vertical-line-color);
+ font-weight: bold;
+}
+.quarter:first-child {
+ border-left: 1px solid var(--nt-plan-vertical-line-color);
+}
+
+.nt-plan-group {
+ margin: 20px 0;
+ position: relative;
+}
+
+.nt-plan-group {
+ display: flex;
+}
+
+.nt-plan-group-summary {
+ background: #2751b0;
+ width: 150px;
+ white-space: normal;
+ padding: 0.1rem 0.5rem;
+ border-radius: 5px;
+ color: #fff;
+ z-index: 3;
+}
+.nt-plan-group-summary p {
+ margin: 0;
+ padding: 0;
+ font-size: 0.6rem;
+ color: #fff;
+}
+
+.nt-plan-group-summary,
+.month,
+.period,
+.week,
+.day,
+.nt-tooltip {
+ border: 3px solid white;
+ box-shadow: 0 2px 3px -1px rgba(0, 0, 0, 0.2), 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.nt-plan-periods {
+ padding-left: 150px;
+}
+
+.months {
+ z-index: 2;
+ position: relative;
+}
+
+.weeks {
+ position: relative;
+ top: -2px;
+ z-index: 0;
+}
+
+.month,
+.quarter,
+.year,
+.week,
+.day,
+.nt-tooltip {
+ font-family: Roboto, Helvetica, Arial, sans-serif;
+ box-sizing: border-box;
+}
diff --git a/docs/docs/css/neoteroi-mkdocs.css b/docs/docs/css/neoteroi-mkdocs.css
new file mode 100644
index 00000000..ee7d53a5
--- /dev/null
+++ b/docs/docs/css/neoteroi-mkdocs.css
@@ -0,0 +1,1399 @@
+/**
+ * All CSS for the neoteroi.projects.gantt extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+:root {
+ --nt-color-0: #CD853F;
+ --nt-color-1: #B22222;
+ --nt-color-2: #000080;
+ --nt-color-3: #4B0082;
+ --nt-color-4: #3CB371;
+ --nt-color-5: #D2B48C;
+ --nt-color-6: #FF00FF;
+ --nt-color-7: #98FB98;
+ --nt-color-8: #FFEBCD;
+ --nt-color-9: #2E8B57;
+ --nt-color-10: #6A5ACD;
+ --nt-color-11: #48D1CC;
+ --nt-color-12: #FFA500;
+ --nt-color-13: #F4A460;
+ --nt-color-14: #A52A2A;
+ --nt-color-15: #FFE4C4;
+ --nt-color-16: #FF4500;
+ --nt-color-17: #AFEEEE;
+ --nt-color-18: #FA8072;
+ --nt-color-19: #2F4F4F;
+ --nt-color-20: #FFDAB9;
+ --nt-color-21: #BC8F8F;
+ --nt-color-22: #FFC0CB;
+ --nt-color-23: #00FA9A;
+ --nt-color-24: #F0FFF0;
+ --nt-color-25: #FFFACD;
+ --nt-color-26: #F5F5F5;
+ --nt-color-27: #FF6347;
+ --nt-color-28: #FFFFF0;
+ --nt-color-29: #7FFFD4;
+ --nt-color-30: #E9967A;
+ --nt-color-31: #7B68EE;
+ --nt-color-32: #FFF8DC;
+ --nt-color-33: #0000CD;
+ --nt-color-34: #D2691E;
+ --nt-color-35: #708090;
+ --nt-color-36: #5F9EA0;
+ --nt-color-37: #008080;
+ --nt-color-38: #008000;
+ --nt-color-39: #FFE4E1;
+ --nt-color-40: #FFFF00;
+ --nt-color-41: #FFFAF0;
+ --nt-color-42: #DCDCDC;
+ --nt-color-43: #ADFF2F;
+ --nt-color-44: #ADD8E6;
+ --nt-color-45: #8B008B;
+ --nt-color-46: #7FFF00;
+ --nt-color-47: #800000;
+ --nt-color-48: #20B2AA;
+ --nt-color-49: #556B2F;
+ --nt-color-50: #778899;
+ --nt-color-51: #E6E6FA;
+ --nt-color-52: #FFFAFA;
+ --nt-color-53: #FF7F50;
+ --nt-color-54: #FF0000;
+ --nt-color-55: #F5DEB3;
+ --nt-color-56: #008B8B;
+ --nt-color-57: #66CDAA;
+ --nt-color-58: #808000;
+ --nt-color-59: #FAF0E6;
+ --nt-color-60: #00BFFF;
+ --nt-color-61: #C71585;
+ --nt-color-62: #00FFFF;
+ --nt-color-63: #8B4513;
+ --nt-color-64: #F0F8FF;
+ --nt-color-65: #FAEBD7;
+ --nt-color-66: #8B0000;
+ --nt-color-67: #4682B4;
+ --nt-color-68: #F0E68C;
+ --nt-color-69: #BDB76B;
+ --nt-color-70: #A0522D;
+ --nt-color-71: #FAFAD2;
+ --nt-color-72: #FFD700;
+ --nt-color-73: #DEB887;
+ --nt-color-74: #E0FFFF;
+ --nt-color-75: #8A2BE2;
+ --nt-color-76: #32CD32;
+ --nt-color-77: #87CEFA;
+ --nt-color-78: #00CED1;
+ --nt-color-79: #696969;
+ --nt-color-80: #DDA0DD;
+ --nt-color-81: #EE82EE;
+ --nt-color-82: #FFB6C1;
+ --nt-color-83: #8FBC8F;
+ --nt-color-84: #D8BFD8;
+ --nt-color-85: #9400D3;
+ --nt-color-86: #A9A9A9;
+ --nt-color-87: #FFFFE0;
+ --nt-color-88: #FFF5EE;
+ --nt-color-89: #FFF0F5;
+ --nt-color-90: #FFDEAD;
+ --nt-color-91: #800080;
+ --nt-color-92: #B0E0E6;
+ --nt-color-93: #9932CC;
+ --nt-color-94: #DAA520;
+ --nt-color-95: #F0FFFF;
+ --nt-color-96: #40E0D0;
+ --nt-color-97: #00FF7F;
+ --nt-color-98: #006400;
+ --nt-color-99: #808080;
+ --nt-color-100: #87CEEB;
+ --nt-color-101: #0000FF;
+ --nt-color-102: #6495ED;
+ --nt-color-103: #FDF5E6;
+ --nt-color-104: #B8860B;
+ --nt-color-105: #BA55D3;
+ --nt-color-106: #C0C0C0;
+ --nt-color-107: #000000;
+ --nt-color-108: #F08080;
+ --nt-color-109: #B0C4DE;
+ --nt-color-110: #00008B;
+ --nt-color-111: #6B8E23;
+ --nt-color-112: #FFE4B5;
+ --nt-color-113: #FFA07A;
+ --nt-color-114: #9ACD32;
+ --nt-color-115: #FFFFFF;
+ --nt-color-116: #F5F5DC;
+ --nt-color-117: #90EE90;
+ --nt-color-118: #1E90FF;
+ --nt-color-119: #7CFC00;
+ --nt-color-120: #FF69B4;
+ --nt-color-121: #F8F8FF;
+ --nt-color-122: #F5FFFA;
+ --nt-color-123: #00FF00;
+ --nt-color-124: #D3D3D3;
+ --nt-color-125: #DB7093;
+ --nt-color-126: #DA70D6;
+ --nt-color-127: #FF1493;
+ --nt-color-128: #228B22;
+ --nt-color-129: #FFEFD5;
+ --nt-color-130: #4169E1;
+ --nt-color-131: #191970;
+ --nt-color-132: #9370DB;
+ --nt-color-133: #483D8B;
+ --nt-color-134: #FF8C00;
+ --nt-color-135: #EEE8AA;
+ --nt-color-136: #CD5C5C;
+ --nt-color-137: #DC143C;
+}
+
+:root {
+ --nt-group-0-main: #000000;
+ --nt-group-0-dark: #FFFFFF;
+ --nt-group-0-light: #000000;
+ --nt-group-0-main-bg: #F44336;
+ --nt-group-0-dark-bg: #BA000D;
+ --nt-group-0-light-bg: #FF7961;
+ --nt-group-1-main: #000000;
+ --nt-group-1-dark: #FFFFFF;
+ --nt-group-1-light: #000000;
+ --nt-group-1-main-bg: #E91E63;
+ --nt-group-1-dark-bg: #B0003A;
+ --nt-group-1-light-bg: #FF6090;
+ --nt-group-2-main: #FFFFFF;
+ --nt-group-2-dark: #FFFFFF;
+ --nt-group-2-light: #000000;
+ --nt-group-2-main-bg: #9C27B0;
+ --nt-group-2-dark-bg: #6A0080;
+ --nt-group-2-light-bg: #D05CE3;
+ --nt-group-3-main: #FFFFFF;
+ --nt-group-3-dark: #FFFFFF;
+ --nt-group-3-light: #000000;
+ --nt-group-3-main-bg: #673AB7;
+ --nt-group-3-dark-bg: #320B86;
+ --nt-group-3-light-bg: #9A67EA;
+ --nt-group-4-main: #FFFFFF;
+ --nt-group-4-dark: #FFFFFF;
+ --nt-group-4-light: #000000;
+ --nt-group-4-main-bg: #3F51B5;
+ --nt-group-4-dark-bg: #002984;
+ --nt-group-4-light-bg: #757DE8;
+ --nt-group-5-main: #000000;
+ --nt-group-5-dark: #FFFFFF;
+ --nt-group-5-light: #000000;
+ --nt-group-5-main-bg: #2196F3;
+ --nt-group-5-dark-bg: #0069C0;
+ --nt-group-5-light-bg: #6EC6FF;
+ --nt-group-6-main: #000000;
+ --nt-group-6-dark: #FFFFFF;
+ --nt-group-6-light: #000000;
+ --nt-group-6-main-bg: #03A9F4;
+ --nt-group-6-dark-bg: #007AC1;
+ --nt-group-6-light-bg: #67DAFF;
+ --nt-group-7-main: #000000;
+ --nt-group-7-dark: #000000;
+ --nt-group-7-light: #000000;
+ --nt-group-7-main-bg: #00BCD4;
+ --nt-group-7-dark-bg: #008BA3;
+ --nt-group-7-light-bg: #62EFFF;
+ --nt-group-8-main: #000000;
+ --nt-group-8-dark: #FFFFFF;
+ --nt-group-8-light: #000000;
+ --nt-group-8-main-bg: #009688;
+ --nt-group-8-dark-bg: #00675B;
+ --nt-group-8-light-bg: #52C7B8;
+ --nt-group-9-main: #000000;
+ --nt-group-9-dark: #FFFFFF;
+ --nt-group-9-light: #000000;
+ --nt-group-9-main-bg: #4CAF50;
+ --nt-group-9-dark-bg: #087F23;
+ --nt-group-9-light-bg: #80E27E;
+ --nt-group-10-main: #000000;
+ --nt-group-10-dark: #000000;
+ --nt-group-10-light: #000000;
+ --nt-group-10-main-bg: #8BC34A;
+ --nt-group-10-dark-bg: #5A9216;
+ --nt-group-10-light-bg: #BEF67A;
+ --nt-group-11-main: #000000;
+ --nt-group-11-dark: #000000;
+ --nt-group-11-light: #000000;
+ --nt-group-11-main-bg: #CDDC39;
+ --nt-group-11-dark-bg: #99AA00;
+ --nt-group-11-light-bg: #FFFF6E;
+ --nt-group-12-main: #000000;
+ --nt-group-12-dark: #000000;
+ --nt-group-12-light: #000000;
+ --nt-group-12-main-bg: #FFEB3B;
+ --nt-group-12-dark-bg: #C8B900;
+ --nt-group-12-light-bg: #FFFF72;
+ --nt-group-13-main: #000000;
+ --nt-group-13-dark: #000000;
+ --nt-group-13-light: #000000;
+ --nt-group-13-main-bg: #FFC107;
+ --nt-group-13-dark-bg: #C79100;
+ --nt-group-13-light-bg: #FFF350;
+ --nt-group-14-main: #000000;
+ --nt-group-14-dark: #000000;
+ --nt-group-14-light: #000000;
+ --nt-group-14-main-bg: #FF9800;
+ --nt-group-14-dark-bg: #C66900;
+ --nt-group-14-light-bg: #FFC947;
+ --nt-group-15-main: #000000;
+ --nt-group-15-dark: #FFFFFF;
+ --nt-group-15-light: #000000;
+ --nt-group-15-main-bg: #FF5722;
+ --nt-group-15-dark-bg: #C41C00;
+ --nt-group-15-light-bg: #FF8A50;
+ --nt-group-16-main: #FFFFFF;
+ --nt-group-16-dark: #FFFFFF;
+ --nt-group-16-light: #000000;
+ --nt-group-16-main-bg: #795548;
+ --nt-group-16-dark-bg: #4B2C20;
+ --nt-group-16-light-bg: #A98274;
+ --nt-group-17-main: #000000;
+ --nt-group-17-dark: #FFFFFF;
+ --nt-group-17-light: #000000;
+ --nt-group-17-main-bg: #9E9E9E;
+ --nt-group-17-dark-bg: #707070;
+ --nt-group-17-light-bg: #CFCFCF;
+ --nt-group-18-main: #000000;
+ --nt-group-18-dark: #FFFFFF;
+ --nt-group-18-light: #000000;
+ --nt-group-18-main-bg: #607D8B;
+ --nt-group-18-dark-bg: #34515E;
+ --nt-group-18-light-bg: #8EACBB;
+}
+
+.nt-pastello {
+ --nt-group-0-main: #000000;
+ --nt-group-0-dark: #000000;
+ --nt-group-0-light: #000000;
+ --nt-group-0-main-bg: #EF9A9A;
+ --nt-group-0-dark-bg: #BA6B6C;
+ --nt-group-0-light-bg: #FFCCCB;
+ --nt-group-1-main: #000000;
+ --nt-group-1-dark: #000000;
+ --nt-group-1-light: #000000;
+ --nt-group-1-main-bg: #F48FB1;
+ --nt-group-1-dark-bg: #BF5F82;
+ --nt-group-1-light-bg: #FFC1E3;
+ --nt-group-2-main: #000000;
+ --nt-group-2-dark: #000000;
+ --nt-group-2-light: #000000;
+ --nt-group-2-main-bg: #CE93D8;
+ --nt-group-2-dark-bg: #9C64A6;
+ --nt-group-2-light-bg: #FFC4FF;
+ --nt-group-3-main: #000000;
+ --nt-group-3-dark: #000000;
+ --nt-group-3-light: #000000;
+ --nt-group-3-main-bg: #B39DDB;
+ --nt-group-3-dark-bg: #836FA9;
+ --nt-group-3-light-bg: #E6CEFF;
+ --nt-group-4-main: #000000;
+ --nt-group-4-dark: #000000;
+ --nt-group-4-light: #000000;
+ --nt-group-4-main-bg: #9FA8DA;
+ --nt-group-4-dark-bg: #6F79A8;
+ --nt-group-4-light-bg: #D1D9FF;
+ --nt-group-5-main: #000000;
+ --nt-group-5-dark: #000000;
+ --nt-group-5-light: #000000;
+ --nt-group-5-main-bg: #90CAF9;
+ --nt-group-5-dark-bg: #5D99C6;
+ --nt-group-5-light-bg: #C3FDFF;
+ --nt-group-6-main: #000000;
+ --nt-group-6-dark: #000000;
+ --nt-group-6-light: #000000;
+ --nt-group-6-main-bg: #81D4FA;
+ --nt-group-6-dark-bg: #4BA3C7;
+ --nt-group-6-light-bg: #B6FFFF;
+ --nt-group-7-main: #000000;
+ --nt-group-7-dark: #000000;
+ --nt-group-7-light: #000000;
+ --nt-group-7-main-bg: #80DEEA;
+ --nt-group-7-dark-bg: #4BACB8;
+ --nt-group-7-light-bg: #B4FFFF;
+ --nt-group-8-main: #000000;
+ --nt-group-8-dark: #000000;
+ --nt-group-8-light: #000000;
+ --nt-group-8-main-bg: #80CBC4;
+ --nt-group-8-dark-bg: #4F9A94;
+ --nt-group-8-light-bg: #B2FEF7;
+ --nt-group-9-main: #000000;
+ --nt-group-9-dark: #000000;
+ --nt-group-9-light: #000000;
+ --nt-group-9-main-bg: #A5D6A7;
+ --nt-group-9-dark-bg: #75A478;
+ --nt-group-9-light-bg: #D7FFD9;
+ --nt-group-10-main: #000000;
+ --nt-group-10-dark: #000000;
+ --nt-group-10-light: #000000;
+ --nt-group-10-main-bg: #C5E1A5;
+ --nt-group-10-dark-bg: #94AF76;
+ --nt-group-10-light-bg: #F8FFD7;
+ --nt-group-11-main: #000000;
+ --nt-group-11-dark: #000000;
+ --nt-group-11-light: #000000;
+ --nt-group-11-main-bg: #E6EE9C;
+ --nt-group-11-dark-bg: #B3BC6D;
+ --nt-group-11-light-bg: #FFFFCE;
+ --nt-group-12-main: #000000;
+ --nt-group-12-dark: #000000;
+ --nt-group-12-light: #000000;
+ --nt-group-12-main-bg: #FFF59D;
+ --nt-group-12-dark-bg: #CBC26D;
+ --nt-group-12-light-bg: #FFFFCF;
+ --nt-group-13-main: #000000;
+ --nt-group-13-dark: #000000;
+ --nt-group-13-light: #000000;
+ --nt-group-13-main-bg: #FFE082;
+ --nt-group-13-dark-bg: #CAAE53;
+ --nt-group-13-light-bg: #FFFFB3;
+ --nt-group-14-main: #000000;
+ --nt-group-14-dark: #000000;
+ --nt-group-14-light: #000000;
+ --nt-group-14-main-bg: #FFCC80;
+ --nt-group-14-dark-bg: #CA9B52;
+ --nt-group-14-light-bg: #FFFFB0;
+ --nt-group-15-main: #000000;
+ --nt-group-15-dark: #000000;
+ --nt-group-15-light: #000000;
+ --nt-group-15-main-bg: #FFAB91;
+ --nt-group-15-dark-bg: #C97B63;
+ --nt-group-15-light-bg: #FFDDC1;
+ --nt-group-16-main: #000000;
+ --nt-group-16-dark: #000000;
+ --nt-group-16-light: #000000;
+ --nt-group-16-main-bg: #BCAAA4;
+ --nt-group-16-dark-bg: #8C7B75;
+ --nt-group-16-light-bg: #EFDCD5;
+ --nt-group-17-main: #000000;
+ --nt-group-17-dark: #000000;
+ --nt-group-17-light: #000000;
+ --nt-group-17-main-bg: #EEEEEE;
+ --nt-group-17-dark-bg: #BCBCBC;
+ --nt-group-17-light-bg: #FFFFFF;
+ --nt-group-18-main: #000000;
+ --nt-group-18-dark: #000000;
+ --nt-group-18-light: #000000;
+ --nt-group-18-main-bg: #B0BEC5;
+ --nt-group-18-dark-bg: #808E95;
+ --nt-group-18-light-bg: #E2F1F8;
+}
+
+.nt-group-0 .nt-plan-group-summary,
+.nt-group-0 .nt-timeline-dot {
+ color: var(--nt-group-0-dark);
+ background-color: var(--nt-group-0-dark-bg);
+}
+.nt-group-0 .period {
+ color: var(--nt-group-0-main);
+ background-color: var(--nt-group-0-main-bg);
+}
+
+.nt-group-1 .nt-plan-group-summary,
+.nt-group-1 .nt-timeline-dot {
+ color: var(--nt-group-1-dark);
+ background-color: var(--nt-group-1-dark-bg);
+}
+.nt-group-1 .period {
+ color: var(--nt-group-1-main);
+ background-color: var(--nt-group-1-main-bg);
+}
+
+.nt-group-2 .nt-plan-group-summary,
+.nt-group-2 .nt-timeline-dot {
+ color: var(--nt-group-2-dark);
+ background-color: var(--nt-group-2-dark-bg);
+}
+.nt-group-2 .period {
+ color: var(--nt-group-2-main);
+ background-color: var(--nt-group-2-main-bg);
+}
+
+.nt-group-3 .nt-plan-group-summary,
+.nt-group-3 .nt-timeline-dot {
+ color: var(--nt-group-3-dark);
+ background-color: var(--nt-group-3-dark-bg);
+}
+.nt-group-3 .period {
+ color: var(--nt-group-3-main);
+ background-color: var(--nt-group-3-main-bg);
+}
+
+.nt-group-4 .nt-plan-group-summary,
+.nt-group-4 .nt-timeline-dot {
+ color: var(--nt-group-4-dark);
+ background-color: var(--nt-group-4-dark-bg);
+}
+.nt-group-4 .period {
+ color: var(--nt-group-4-main);
+ background-color: var(--nt-group-4-main-bg);
+}
+
+.nt-group-5 .nt-plan-group-summary,
+.nt-group-5 .nt-timeline-dot {
+ color: var(--nt-group-5-dark);
+ background-color: var(--nt-group-5-dark-bg);
+}
+.nt-group-5 .period {
+ color: var(--nt-group-5-main);
+ background-color: var(--nt-group-5-main-bg);
+}
+
+.nt-group-6 .nt-plan-group-summary,
+.nt-group-6 .nt-timeline-dot {
+ color: var(--nt-group-6-dark);
+ background-color: var(--nt-group-6-dark-bg);
+}
+.nt-group-6 .period {
+ color: var(--nt-group-6-main);
+ background-color: var(--nt-group-6-main-bg);
+}
+
+.nt-group-7 .nt-plan-group-summary,
+.nt-group-7 .nt-timeline-dot {
+ color: var(--nt-group-7-dark);
+ background-color: var(--nt-group-7-dark-bg);
+}
+.nt-group-7 .period {
+ color: var(--nt-group-7-main);
+ background-color: var(--nt-group-7-main-bg);
+}
+
+.nt-group-8 .nt-plan-group-summary,
+.nt-group-8 .nt-timeline-dot {
+ color: var(--nt-group-8-dark);
+ background-color: var(--nt-group-8-dark-bg);
+}
+.nt-group-8 .period {
+ color: var(--nt-group-8-main);
+ background-color: var(--nt-group-8-main-bg);
+}
+
+.nt-group-9 .nt-plan-group-summary,
+.nt-group-9 .nt-timeline-dot {
+ color: var(--nt-group-9-dark);
+ background-color: var(--nt-group-9-dark-bg);
+}
+.nt-group-9 .period {
+ color: var(--nt-group-9-main);
+ background-color: var(--nt-group-9-main-bg);
+}
+
+.nt-group-10 .nt-plan-group-summary,
+.nt-group-10 .nt-timeline-dot {
+ color: var(--nt-group-10-dark);
+ background-color: var(--nt-group-10-dark-bg);
+}
+.nt-group-10 .period {
+ color: var(--nt-group-10-main);
+ background-color: var(--nt-group-10-main-bg);
+}
+
+.nt-group-11 .nt-plan-group-summary,
+.nt-group-11 .nt-timeline-dot {
+ color: var(--nt-group-11-dark);
+ background-color: var(--nt-group-11-dark-bg);
+}
+.nt-group-11 .period {
+ color: var(--nt-group-11-main);
+ background-color: var(--nt-group-11-main-bg);
+}
+
+.nt-group-12 .nt-plan-group-summary,
+.nt-group-12 .nt-timeline-dot {
+ color: var(--nt-group-12-dark);
+ background-color: var(--nt-group-12-dark-bg);
+}
+.nt-group-12 .period {
+ color: var(--nt-group-12-main);
+ background-color: var(--nt-group-12-main-bg);
+}
+
+.nt-group-13 .nt-plan-group-summary,
+.nt-group-13 .nt-timeline-dot {
+ color: var(--nt-group-13-dark);
+ background-color: var(--nt-group-13-dark-bg);
+}
+.nt-group-13 .period {
+ color: var(--nt-group-13-main);
+ background-color: var(--nt-group-13-main-bg);
+}
+
+.nt-group-14 .nt-plan-group-summary,
+.nt-group-14 .nt-timeline-dot {
+ color: var(--nt-group-14-dark);
+ background-color: var(--nt-group-14-dark-bg);
+}
+.nt-group-14 .period {
+ color: var(--nt-group-14-main);
+ background-color: var(--nt-group-14-main-bg);
+}
+
+.nt-group-15 .nt-plan-group-summary,
+.nt-group-15 .nt-timeline-dot {
+ color: var(--nt-group-15-dark);
+ background-color: var(--nt-group-15-dark-bg);
+}
+.nt-group-15 .period {
+ color: var(--nt-group-15-main);
+ background-color: var(--nt-group-15-main-bg);
+}
+
+.nt-group-16 .nt-plan-group-summary,
+.nt-group-16 .nt-timeline-dot {
+ color: var(--nt-group-16-dark);
+ background-color: var(--nt-group-16-dark-bg);
+}
+.nt-group-16 .period {
+ color: var(--nt-group-16-main);
+ background-color: var(--nt-group-16-main-bg);
+}
+
+.nt-group-17 .nt-plan-group-summary,
+.nt-group-17 .nt-timeline-dot {
+ color: var(--nt-group-17-dark);
+ background-color: var(--nt-group-17-dark-bg);
+}
+.nt-group-17 .period {
+ color: var(--nt-group-17-main);
+ background-color: var(--nt-group-17-main-bg);
+}
+
+.nt-group-18 .nt-plan-group-summary,
+.nt-group-18 .nt-timeline-dot {
+ color: var(--nt-group-18-dark);
+ background-color: var(--nt-group-18-dark-bg);
+}
+.nt-group-18 .period {
+ color: var(--nt-group-18-main);
+ background-color: var(--nt-group-18-main-bg);
+}
+
+/**
+ * Extra CSS file for MkDocs and the neoteroi.timeline extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+.nt-error {
+ border: 2px dashed darkred;
+ padding: 0 1rem;
+ background: #faf9ba;
+ color: darkred;
+}
+
+.nt-timeline {
+ margin-top: 30px;
+}
+.nt-timeline .nt-timeline-title {
+ font-size: 1.1rem;
+ margin-top: 0;
+}
+.nt-timeline .nt-timeline-sub-title {
+ margin-top: 0;
+}
+.nt-timeline .nt-timeline-content {
+ font-size: 0.8rem;
+ border-bottom: 2px dashed #ccc;
+ padding-bottom: 1.2rem;
+}
+.nt-timeline.horizontal .nt-timeline-items {
+ flex-direction: row;
+ overflow-x: scroll;
+}
+.nt-timeline.horizontal .nt-timeline-items > div {
+ min-width: 400px;
+ margin-right: 50px;
+}
+.nt-timeline.horizontal.reverse .nt-timeline-items {
+ flex-direction: row-reverse;
+}
+.nt-timeline.horizontal.center .nt-timeline-before {
+ background-image: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%);
+ background-repeat: no-repeat;
+ background-size: 100% 2px;
+ background-position: 0 center;
+}
+.nt-timeline.horizontal.center .nt-timeline-after {
+ background-image: linear-gradient(180deg, rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%);
+ background-repeat: no-repeat;
+ background-size: 100% 2px;
+ background-position: 0 center;
+}
+.nt-timeline.horizontal.center .nt-timeline-items {
+ background-image: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%);
+ background-repeat: no-repeat;
+ background-size: 100% 2px;
+ background-position: 0 center;
+}
+.nt-timeline.horizontal .nt-timeline-dot {
+ left: 50%;
+}
+.nt-timeline.horizontal .nt-timeline-dot:not(.bigger) {
+ top: calc(50% - 4px);
+}
+.nt-timeline.horizontal .nt-timeline-dot.bigger {
+ top: calc(50% - 15px);
+}
+.nt-timeline.vertical .nt-timeline-items {
+ flex-direction: column;
+}
+.nt-timeline.vertical.reverse .nt-timeline-items {
+ flex-direction: column-reverse;
+}
+.nt-timeline.vertical.center .nt-timeline-before {
+ background: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%;
+}
+.nt-timeline.vertical.center .nt-timeline-after {
+ background: linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat center/2px 100%;
+}
+.nt-timeline.vertical.center .nt-timeline-items {
+ background: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%;
+}
+.nt-timeline.vertical.center .nt-timeline-dot {
+ left: calc(50% - 10px);
+}
+.nt-timeline.vertical.center .nt-timeline-dot:not(.bigger) {
+ top: 10px;
+}
+.nt-timeline.vertical.center .nt-timeline-dot.bigger {
+ left: calc(50% - 20px);
+}
+.nt-timeline.vertical.left {
+ padding-left: 100px;
+}
+.nt-timeline.vertical.left .nt-timeline-item {
+ padding-left: 70px;
+}
+.nt-timeline.vertical.left .nt-timeline-sub-title {
+ left: -100px;
+ width: 100px;
+}
+.nt-timeline.vertical.left .nt-timeline-before {
+ background: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%;
+}
+.nt-timeline.vertical.left .nt-timeline-after {
+ background: linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat 30px/2px 100%;
+}
+.nt-timeline.vertical.left .nt-timeline-items {
+ background: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%;
+}
+.nt-timeline.vertical.left .nt-timeline-dot {
+ left: 21px;
+ top: 8px;
+}
+.nt-timeline.vertical.left .nt-timeline-dot.bigger {
+ top: 0px;
+ left: 10px;
+}
+.nt-timeline.vertical.right {
+ padding-right: 100px;
+}
+.nt-timeline.vertical.right .nt-timeline-sub-title {
+ right: -100px;
+ text-align: left;
+ width: 100px;
+}
+.nt-timeline.vertical.right .nt-timeline-item {
+ padding-right: 70px;
+}
+.nt-timeline.vertical.right .nt-timeline-before {
+ background: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%;
+}
+.nt-timeline.vertical.right .nt-timeline-after {
+ background: linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat calc(100% - 30px)/2px 100%;
+}
+.nt-timeline.vertical.right .nt-timeline-items {
+ background: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%;
+}
+.nt-timeline.vertical.right .nt-timeline-dot {
+ right: 21px;
+ top: 8px;
+}
+.nt-timeline.vertical.right .nt-timeline-dot.bigger {
+ top: 10px;
+ right: 10px;
+}
+
+.nt-timeline-items {
+ display: flex;
+ position: relative;
+}
+.nt-timeline-items > div {
+ min-height: 100px;
+ padding-top: 2px;
+ padding-bottom: 20px;
+}
+
+.nt-timeline-before {
+ content: "";
+ height: 15px;
+}
+
+.nt-timeline-after {
+ content: "";
+ height: 60px;
+ margin-bottom: 20px;
+}
+
+.nt-timeline-sub-title {
+ position: absolute;
+ width: 50%;
+ top: 4px;
+ font-size: 18px;
+ color: var(--nt-color-50);
+}
+
+[data-md-color-scheme=slate] .nt-timeline-sub-title {
+ color: var(--nt-color-51);
+}
+
+.nt-timeline-item {
+ position: relative;
+}
+
+.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item {
+ padding-left: calc(50% + 40px);
+}
+.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title {
+ left: 0;
+ padding-right: 40px;
+ text-align: right;
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) {
+ padding-left: calc(50% + 40px);
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title {
+ left: 0;
+ padding-right: 40px;
+ text-align: right;
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) {
+ text-align: right;
+ padding-right: calc(50% + 40px);
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title {
+ right: 0;
+ padding-left: 40px;
+ text-align: left;
+}
+
+.nt-timeline-dot {
+ position: relative;
+ width: 20px;
+ height: 20px;
+ border-radius: 100%;
+ background-color: #fc5b5b;
+ position: absolute;
+ top: 0px;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+ border: 3px solid white;
+}
+.nt-timeline-dot:not(.bigger) .icon {
+ font-size: 10px;
+}
+.nt-timeline-dot.bigger {
+ width: 40px;
+ height: 40px;
+ padding: 3px;
+}
+.nt-timeline-dot .icon {
+ color: white;
+}
+
+/* Fix for webkit (Chrome, Safari) */
+@supports not (-moz-appearance: none) {
+ /*
+ This fix is necessary, for some reason, to render the timeline properly
+ inside `details` elements used by pymdownx. Firefox doesn't need this fix,
+ it renders elements properly.
+ */
+ details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title,
+details .nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title {
+ left: -40px;
+ }
+ details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title {
+ right: -40px;
+ }
+ details .nt-timeline.vertical.center .nt-timeline-dot {
+ left: calc(50% - 12px);
+ }
+ details .nt-timeline-dot.bigger {
+ font-size: 1rem !important;
+ }
+}
+/* default colors */
+.nt-timeline-item:nth-child(0) .nt-timeline-dot {
+ background-color: var(--nt-color-0);
+}
+
+.nt-timeline-item:nth-child(1) .nt-timeline-dot {
+ background-color: var(--nt-color-1);
+}
+
+.nt-timeline-item:nth-child(2) .nt-timeline-dot {
+ background-color: var(--nt-color-2);
+}
+
+.nt-timeline-item:nth-child(3) .nt-timeline-dot {
+ background-color: var(--nt-color-3);
+}
+
+.nt-timeline-item:nth-child(4) .nt-timeline-dot {
+ background-color: var(--nt-color-4);
+}
+
+.nt-timeline-item:nth-child(5) .nt-timeline-dot {
+ background-color: var(--nt-color-5);
+}
+
+.nt-timeline-item:nth-child(6) .nt-timeline-dot {
+ background-color: var(--nt-color-6);
+}
+
+.nt-timeline-item:nth-child(7) .nt-timeline-dot {
+ background-color: var(--nt-color-7);
+}
+
+.nt-timeline-item:nth-child(8) .nt-timeline-dot {
+ background-color: var(--nt-color-8);
+}
+
+.nt-timeline-item:nth-child(9) .nt-timeline-dot {
+ background-color: var(--nt-color-9);
+}
+
+.nt-timeline-item:nth-child(10) .nt-timeline-dot {
+ background-color: var(--nt-color-10);
+}
+
+.nt-timeline-item:nth-child(11) .nt-timeline-dot {
+ background-color: var(--nt-color-11);
+}
+
+.nt-timeline-item:nth-child(12) .nt-timeline-dot {
+ background-color: var(--nt-color-12);
+}
+
+.nt-timeline-item:nth-child(13) .nt-timeline-dot {
+ background-color: var(--nt-color-13);
+}
+
+.nt-timeline-item:nth-child(14) .nt-timeline-dot {
+ background-color: var(--nt-color-14);
+}
+
+.nt-timeline-item:nth-child(15) .nt-timeline-dot {
+ background-color: var(--nt-color-15);
+}
+
+.nt-timeline-item:nth-child(16) .nt-timeline-dot {
+ background-color: var(--nt-color-16);
+}
+
+.nt-timeline-item:nth-child(17) .nt-timeline-dot {
+ background-color: var(--nt-color-17);
+}
+
+.nt-timeline-item:nth-child(18) .nt-timeline-dot {
+ background-color: var(--nt-color-18);
+}
+
+.nt-timeline-item:nth-child(19) .nt-timeline-dot {
+ background-color: var(--nt-color-19);
+}
+
+.nt-timeline-item:nth-child(20) .nt-timeline-dot {
+ background-color: var(--nt-color-20);
+}
+
+/**
+ * Extra CSS for the neoteroi.projects.gantt extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+:root {
+ --nt-scrollbar-color: #2751b0;
+ --nt-plan-actions-height: 24px;
+ --nt-units-background: #ff9800;
+ --nt-months-background: #2751b0;
+ --nt-plan-vertical-line-color: #a3a3a3ad;
+}
+
+.nt-pastello {
+ --nt-scrollbar-color: #9fb8f4;
+ --nt-units-background: #f5dc82;
+ --nt-months-background: #5b7fd1;
+}
+
+[data-md-color-scheme=slate] {
+ --nt-units-background: #003773;
+}
+[data-md-color-scheme=slate] .nt-pastello {
+ --nt-units-background: #3f4997;
+}
+
+.nt-plan-root {
+ min-height: 200px;
+ scrollbar-width: 20px;
+ scrollbar-color: var(--nt-scrollbar-color);
+ display: flex;
+}
+.nt-plan-root ::-webkit-scrollbar {
+ width: 20px;
+}
+.nt-plan-root ::-webkit-scrollbar-track {
+ box-shadow: inset 0 0 5px grey;
+ border-radius: 10px;
+}
+.nt-plan-root ::-webkit-scrollbar-thumb {
+ background: var(--nt-scrollbar-color);
+ border-radius: 10px;
+}
+.nt-plan-root .nt-plan {
+ flex: 80%;
+}
+.nt-plan-root.no-groups .nt-plan-periods {
+ padding-left: 0;
+}
+.nt-plan-root.no-groups .nt-plan-group-summary {
+ display: none;
+}
+.nt-plan-root .nt-timeline-dot.bigger {
+ top: -10px;
+}
+.nt-plan-root .nt-timeline-dot.bigger[title] {
+ cursor: help;
+}
+
+.nt-plan {
+ white-space: nowrap;
+ overflow-x: auto;
+ display: flex;
+}
+.nt-plan .ug-timeline-dot {
+ left: 368px;
+ top: -8px;
+ cursor: help;
+}
+
+.months {
+ display: flex;
+}
+
+.month {
+ flex: auto;
+ display: inline-block;
+ box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px inset;
+ background-color: var(--nt-months-background);
+ color: white;
+ text-transform: uppercase;
+ font-family: Roboto, Helvetica, Arial, sans-serif;
+ padding: 2px 5px;
+ font-size: 12px;
+ border: 1px solid #000;
+ width: 150px;
+ border-radius: 8px;
+}
+
+.nt-plan-group-activities {
+ flex: auto;
+ position: relative;
+}
+
+.nt-vline {
+ border-left: 1px dashed var(--nt-plan-vertical-line-color);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ margin-left: -0.5px;
+ top: 0;
+ -webkit-transition: all 0.5s linear !important;
+ -moz-transition: all 0.5s linear !important;
+ -ms-transition: all 0.5s linear !important;
+ -o-transition: all 0.5s linear !important;
+ transition: all 0.5s linear !important;
+ z-index: -2;
+}
+
+.nt-plan-activity {
+ display: flex;
+ margin: 2px 0;
+ background-color: rgba(187, 187, 187, 0.2509803922);
+}
+
+.actions {
+ height: var(--nt-plan-actions-height);
+}
+
+.actions {
+ position: relative;
+}
+
+.period {
+ display: inline-block;
+ height: var(--nt-plan-actions-height);
+ width: 120px;
+ position: absolute;
+ left: 0px;
+ background: #1da1f2;
+ border-radius: 5px;
+ transition: all 0.5s;
+ cursor: help;
+ -webkit-transition: width 1s ease-in-out;
+ -moz-transition: width 1s ease-in-out;
+ -o-transition: width 1s ease-in-out;
+ transition: width 1s ease-in-out;
+}
+.period .nt-tooltip {
+ display: none;
+ top: 30px;
+ position: relative;
+ padding: 1rem;
+ text-align: center;
+ font-size: 12px;
+}
+.period:hover .nt-tooltip {
+ display: inline-block;
+}
+
+.period-0 {
+ left: 340px;
+ visibility: visible;
+ background-color: rgb(69, 97, 101);
+}
+
+.period-1 {
+ left: 40px;
+ visibility: visible;
+ background-color: green;
+}
+
+.period-2 {
+ left: 120px;
+ visibility: visible;
+ background-color: pink;
+ width: 80px;
+}
+
+.period-3 {
+ left: 190px;
+ visibility: visible;
+ background-color: darkred;
+ width: 150px;
+}
+
+.weeks > span,
+.days > span {
+ height: 25px;
+}
+
+.weeks > span {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ font-weight: bold;
+}
+.weeks > span .week-text {
+ font-size: 10px;
+ position: absolute;
+ display: inline-block;
+ padding: 3px 4px;
+}
+
+.days {
+ z-index: -2;
+ position: relative;
+}
+
+.day-text {
+ font-size: 10px;
+ position: absolute;
+ display: inline-block;
+ padding: 3px 4px;
+}
+
+.period span {
+ font-size: 12px;
+ vertical-align: top;
+ margin-left: 4px;
+ color: black;
+ background: rgba(255, 255, 255, 0.6588235294);
+ border-radius: 6px;
+ padding: 0 4px;
+}
+
+.weeks,
+.days {
+ height: 20px;
+ display: flex;
+ box-sizing: content-box;
+}
+
+.months {
+ display: flex;
+}
+
+.week,
+.day {
+ height: 20px;
+ position: relative;
+ border: 1;
+ flex: auto;
+ border: 2px solid white;
+ border-radius: 4px;
+ background-color: var(--nt-units-background);
+ cursor: help;
+}
+
+.years {
+ display: flex;
+}
+
+.year {
+ text-align: center;
+ border-right: 1px solid var(--nt-plan-vertical-line-color);
+ font-weight: bold;
+}
+.year:first-child {
+ border-left: 1px solid var(--nt-plan-vertical-line-color);
+}
+.year:first-child:last-child {
+ width: 100%;
+}
+
+.quarters {
+ display: flex;
+}
+
+.quarter {
+ width: 12.5%;
+ text-align: center;
+ border-right: 1px solid var(--nt-plan-vertical-line-color);
+ font-weight: bold;
+}
+.quarter:first-child {
+ border-left: 1px solid var(--nt-plan-vertical-line-color);
+}
+
+.nt-plan-group {
+ margin: 20px 0;
+ position: relative;
+}
+
+.nt-plan-group {
+ display: flex;
+}
+
+.nt-plan-group-summary {
+ background: #2751b0;
+ width: 150px;
+ white-space: normal;
+ padding: 0.1rem 0.5rem;
+ border-radius: 5px;
+ color: #fff;
+ z-index: 3;
+}
+.nt-plan-group-summary p {
+ margin: 0;
+ padding: 0;
+ font-size: 0.6rem;
+ color: #fff;
+}
+
+.nt-plan-group-summary,
+.month,
+.period,
+.week,
+.day,
+.nt-tooltip {
+ border: 3px solid white;
+ box-shadow: 0 2px 3px -1px rgba(0, 0, 0, 0.2), 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.nt-plan-periods {
+ padding-left: 150px;
+}
+
+.months {
+ z-index: 2;
+ position: relative;
+}
+
+.weeks {
+ position: relative;
+ top: -2px;
+ z-index: 0;
+}
+
+.month,
+.quarter,
+.year,
+.week,
+.day,
+.nt-tooltip {
+ font-family: Roboto, Helvetica, Arial, sans-serif;
+ box-sizing: border-box;
+}
+
+.nt-cards.nt-grid {
+ display: grid;
+ grid-auto-columns: 1fr;
+ gap: 0.5rem;
+ max-width: 100vw;
+ overflow-x: auto;
+ padding: 1px;
+}
+.nt-cards.nt-grid.cols-1 {
+ grid-template-columns: repeat(1, 1fr);
+}
+.nt-cards.nt-grid.cols-2 {
+ grid-template-columns: repeat(2, 1fr);
+}
+.nt-cards.nt-grid.cols-3 {
+ grid-template-columns: repeat(3, 1fr);
+}
+.nt-cards.nt-grid.cols-4 {
+ grid-template-columns: repeat(4, 1fr);
+}
+.nt-cards.nt-grid.cols-5 {
+ grid-template-columns: repeat(5, 1fr);
+}
+.nt-cards.nt-grid.cols-6 {
+ grid-template-columns: repeat(6, 1fr);
+}
+
+@media only screen and (max-width: 400px) {
+ .nt-cards.nt-grid {
+ grid-template-columns: repeat(1, 1fr) !important;
+ }
+}
+.nt-card {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.nt-card:hover {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.24), 0 3px 1px -2px rgba(0, 0, 0, 0.3), 0 1px 5px 0 rgba(0, 0, 0, 0.22);
+}
+
+[data-md-color-scheme=slate] .nt-card {
+ box-shadow: 0 2px 2px 0 rgba(4, 40, 33, 0.14), 0 3px 1px -2px rgba(40, 86, 94, 0.47), 0 1px 5px 0 rgba(139, 252, 255, 0.64);
+}
+[data-md-color-scheme=slate] .nt-card:hover {
+ box-shadow: 0 2px 2px 0 rgba(0, 255, 206, 0.14), 0 3px 1px -2px rgba(33, 156, 177, 0.47), 0 1px 5px 0 rgba(96, 251, 255, 0.64);
+}
+
+.nt-card > a {
+ color: var(--md-default-fg-color);
+}
+
+.nt-card > a > div {
+ cursor: pointer;
+}
+
+.nt-card {
+ padding: 5px;
+ margin-bottom: 0.5rem;
+}
+
+.nt-card-title {
+ font-size: 1rem;
+ font-weight: bold;
+ margin: 4px 0 8px 0;
+ line-height: 22px;
+}
+
+.nt-card-content {
+ padding: 0.4rem 0.8rem 0.8rem 0.8rem;
+}
+
+.nt-card-text {
+ font-size: 14px;
+ padding: 0;
+ margin: 0;
+}
+
+.nt-card .nt-card-image {
+ text-align: center;
+ border-radius: 2px;
+ background-position: center center;
+ background-size: cover;
+ background-repeat: no-repeat;
+ min-height: 120px;
+}
+
+.nt-card .nt-card-image.tags img {
+ margin-top: 12px;
+}
+
+.nt-card .nt-card-image img {
+ height: 105px;
+ margin-top: 5px;
+}
+
+.nt-card a:hover,
+.nt-card a:focus {
+ color: var(--md-accent-fg-color);
+}
+
+.nt-card h2 {
+ margin: 0;
+}
+
+/**
+ * Extra CSS file recommended for MkDocs and neoteroi.spantable extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+.span-table-wrapper table {
+ border-collapse: collapse;
+ margin-bottom: 2rem;
+ border-radius: 0.1rem;
+}
+
+.span-table td,
+.span-table th {
+ padding: 0.2rem;
+ background-color: var(--md-default-bg-color);
+ font-size: 0.64rem;
+ max-width: 100%;
+ overflow: auto;
+ touch-action: auto;
+ border-top: 0.05rem solid var(--md-typeset-table-color);
+ padding: 0.9375em 1.25em;
+ vertical-align: top;
+}
+
+.span-table tr:first-child td {
+ font-weight: 700;
+ min-width: 5rem;
+ padding: 0.9375em 1.25em;
+ vertical-align: top;
+}
+
+.span-table td:first-child {
+ border-left: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table td:last-child {
+ border-right: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table tr:last-child {
+ border-bottom: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table [colspan],
+.span-table [rowspan] {
+ font-weight: bold;
+ border: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table tr:not(:first-child):hover td:not([colspan]):not([rowspan]),
+.span-table td[colspan]:hover,
+.span-table td[rowspan]:hover {
+ background-color: rgba(0, 0, 0, 0.035);
+ box-shadow: 0 0.05rem 0 var(--md-default-bg-color) inset;
+ transition: background-color 125ms;
+}
diff --git a/docs/docs/css/neoteroi-mkdocs.min.css b/docs/docs/css/neoteroi-mkdocs.min.css
new file mode 100644
index 00000000..ea55c672
--- /dev/null
+++ b/docs/docs/css/neoteroi-mkdocs.min.css
@@ -0,0 +1 @@
+:root{--nt-color-0: #CD853F;--nt-color-1: #B22222;--nt-color-2: #000080;--nt-color-3: #4B0082;--nt-color-4: #3CB371;--nt-color-5: #D2B48C;--nt-color-6: #FF00FF;--nt-color-7: #98FB98;--nt-color-8: #FFEBCD;--nt-color-9: #2E8B57;--nt-color-10: #6A5ACD;--nt-color-11: #48D1CC;--nt-color-12: #FFA500;--nt-color-13: #F4A460;--nt-color-14: #A52A2A;--nt-color-15: #FFE4C4;--nt-color-16: #FF4500;--nt-color-17: #AFEEEE;--nt-color-18: #FA8072;--nt-color-19: #2F4F4F;--nt-color-20: #FFDAB9;--nt-color-21: #BC8F8F;--nt-color-22: #FFC0CB;--nt-color-23: #00FA9A;--nt-color-24: #F0FFF0;--nt-color-25: #FFFACD;--nt-color-26: #F5F5F5;--nt-color-27: #FF6347;--nt-color-28: #FFFFF0;--nt-color-29: #7FFFD4;--nt-color-30: #E9967A;--nt-color-31: #7B68EE;--nt-color-32: #FFF8DC;--nt-color-33: #0000CD;--nt-color-34: #D2691E;--nt-color-35: #708090;--nt-color-36: #5F9EA0;--nt-color-37: #008080;--nt-color-38: #008000;--nt-color-39: #FFE4E1;--nt-color-40: #FFFF00;--nt-color-41: #FFFAF0;--nt-color-42: #DCDCDC;--nt-color-43: #ADFF2F;--nt-color-44: #ADD8E6;--nt-color-45: #8B008B;--nt-color-46: #7FFF00;--nt-color-47: #800000;--nt-color-48: #20B2AA;--nt-color-49: #556B2F;--nt-color-50: #778899;--nt-color-51: #E6E6FA;--nt-color-52: #FFFAFA;--nt-color-53: #FF7F50;--nt-color-54: #FF0000;--nt-color-55: #F5DEB3;--nt-color-56: #008B8B;--nt-color-57: #66CDAA;--nt-color-58: #808000;--nt-color-59: #FAF0E6;--nt-color-60: #00BFFF;--nt-color-61: #C71585;--nt-color-62: #00FFFF;--nt-color-63: #8B4513;--nt-color-64: #F0F8FF;--nt-color-65: #FAEBD7;--nt-color-66: #8B0000;--nt-color-67: #4682B4;--nt-color-68: #F0E68C;--nt-color-69: #BDB76B;--nt-color-70: #A0522D;--nt-color-71: #FAFAD2;--nt-color-72: #FFD700;--nt-color-73: #DEB887;--nt-color-74: #E0FFFF;--nt-color-75: #8A2BE2;--nt-color-76: #32CD32;--nt-color-77: #87CEFA;--nt-color-78: #00CED1;--nt-color-79: #696969;--nt-color-80: #DDA0DD;--nt-color-81: #EE82EE;--nt-color-82: #FFB6C1;--nt-color-83: #8FBC8F;--nt-color-84: #D8BFD8;--nt-color-85: #9400D3;--nt-color-86: #A9A9A9;--nt-color-87: #FFFFE0;--nt-color-88: #FFF5EE;--nt-color-89: #FFF0F5;--nt-color-90: #FFDEAD;--nt-color-91: #800080;--nt-color-92: #B0E0E6;--nt-color-93: #9932CC;--nt-color-94: #DAA520;--nt-color-95: #F0FFFF;--nt-color-96: #40E0D0;--nt-color-97: #00FF7F;--nt-color-98: #006400;--nt-color-99: #808080;--nt-color-100: #87CEEB;--nt-color-101: #0000FF;--nt-color-102: #6495ED;--nt-color-103: #FDF5E6;--nt-color-104: #B8860B;--nt-color-105: #BA55D3;--nt-color-106: #C0C0C0;--nt-color-107: #000000;--nt-color-108: #F08080;--nt-color-109: #B0C4DE;--nt-color-110: #00008B;--nt-color-111: #6B8E23;--nt-color-112: #FFE4B5;--nt-color-113: #FFA07A;--nt-color-114: #9ACD32;--nt-color-115: #FFFFFF;--nt-color-116: #F5F5DC;--nt-color-117: #90EE90;--nt-color-118: #1E90FF;--nt-color-119: #7CFC00;--nt-color-120: #FF69B4;--nt-color-121: #F8F8FF;--nt-color-122: #F5FFFA;--nt-color-123: #00FF00;--nt-color-124: #D3D3D3;--nt-color-125: #DB7093;--nt-color-126: #DA70D6;--nt-color-127: #FF1493;--nt-color-128: #228B22;--nt-color-129: #FFEFD5;--nt-color-130: #4169E1;--nt-color-131: #191970;--nt-color-132: #9370DB;--nt-color-133: #483D8B;--nt-color-134: #FF8C00;--nt-color-135: #EEE8AA;--nt-color-136: #CD5C5C;--nt-color-137: #DC143C}:root{--nt-group-0-main: #000000;--nt-group-0-dark: #FFFFFF;--nt-group-0-light: #000000;--nt-group-0-main-bg: #F44336;--nt-group-0-dark-bg: #BA000D;--nt-group-0-light-bg: #FF7961;--nt-group-1-main: #000000;--nt-group-1-dark: #FFFFFF;--nt-group-1-light: #000000;--nt-group-1-main-bg: #E91E63;--nt-group-1-dark-bg: #B0003A;--nt-group-1-light-bg: #FF6090;--nt-group-2-main: #FFFFFF;--nt-group-2-dark: #FFFFFF;--nt-group-2-light: #000000;--nt-group-2-main-bg: #9C27B0;--nt-group-2-dark-bg: #6A0080;--nt-group-2-light-bg: #D05CE3;--nt-group-3-main: #FFFFFF;--nt-group-3-dark: #FFFFFF;--nt-group-3-light: #000000;--nt-group-3-main-bg: #673AB7;--nt-group-3-dark-bg: #320B86;--nt-group-3-light-bg: #9A67EA;--nt-group-4-main: #FFFFFF;--nt-group-4-dark: #FFFFFF;--nt-group-4-light: #000000;--nt-group-4-main-bg: #3F51B5;--nt-group-4-dark-bg: #002984;--nt-group-4-light-bg: #757DE8;--nt-group-5-main: #000000;--nt-group-5-dark: #FFFFFF;--nt-group-5-light: #000000;--nt-group-5-main-bg: #2196F3;--nt-group-5-dark-bg: #0069C0;--nt-group-5-light-bg: #6EC6FF;--nt-group-6-main: #000000;--nt-group-6-dark: #FFFFFF;--nt-group-6-light: #000000;--nt-group-6-main-bg: #03A9F4;--nt-group-6-dark-bg: #007AC1;--nt-group-6-light-bg: #67DAFF;--nt-group-7-main: #000000;--nt-group-7-dark: #000000;--nt-group-7-light: #000000;--nt-group-7-main-bg: #00BCD4;--nt-group-7-dark-bg: #008BA3;--nt-group-7-light-bg: #62EFFF;--nt-group-8-main: #000000;--nt-group-8-dark: #FFFFFF;--nt-group-8-light: #000000;--nt-group-8-main-bg: #009688;--nt-group-8-dark-bg: #00675B;--nt-group-8-light-bg: #52C7B8;--nt-group-9-main: #000000;--nt-group-9-dark: #FFFFFF;--nt-group-9-light: #000000;--nt-group-9-main-bg: #4CAF50;--nt-group-9-dark-bg: #087F23;--nt-group-9-light-bg: #80E27E;--nt-group-10-main: #000000;--nt-group-10-dark: #000000;--nt-group-10-light: #000000;--nt-group-10-main-bg: #8BC34A;--nt-group-10-dark-bg: #5A9216;--nt-group-10-light-bg: #BEF67A;--nt-group-11-main: #000000;--nt-group-11-dark: #000000;--nt-group-11-light: #000000;--nt-group-11-main-bg: #CDDC39;--nt-group-11-dark-bg: #99AA00;--nt-group-11-light-bg: #FFFF6E;--nt-group-12-main: #000000;--nt-group-12-dark: #000000;--nt-group-12-light: #000000;--nt-group-12-main-bg: #FFEB3B;--nt-group-12-dark-bg: #C8B900;--nt-group-12-light-bg: #FFFF72;--nt-group-13-main: #000000;--nt-group-13-dark: #000000;--nt-group-13-light: #000000;--nt-group-13-main-bg: #FFC107;--nt-group-13-dark-bg: #C79100;--nt-group-13-light-bg: #FFF350;--nt-group-14-main: #000000;--nt-group-14-dark: #000000;--nt-group-14-light: #000000;--nt-group-14-main-bg: #FF9800;--nt-group-14-dark-bg: #C66900;--nt-group-14-light-bg: #FFC947;--nt-group-15-main: #000000;--nt-group-15-dark: #FFFFFF;--nt-group-15-light: #000000;--nt-group-15-main-bg: #FF5722;--nt-group-15-dark-bg: #C41C00;--nt-group-15-light-bg: #FF8A50;--nt-group-16-main: #FFFFFF;--nt-group-16-dark: #FFFFFF;--nt-group-16-light: #000000;--nt-group-16-main-bg: #795548;--nt-group-16-dark-bg: #4B2C20;--nt-group-16-light-bg: #A98274;--nt-group-17-main: #000000;--nt-group-17-dark: #FFFFFF;--nt-group-17-light: #000000;--nt-group-17-main-bg: #9E9E9E;--nt-group-17-dark-bg: #707070;--nt-group-17-light-bg: #CFCFCF;--nt-group-18-main: #000000;--nt-group-18-dark: #FFFFFF;--nt-group-18-light: #000000;--nt-group-18-main-bg: #607D8B;--nt-group-18-dark-bg: #34515E;--nt-group-18-light-bg: #8EACBB}.nt-pastello{--nt-group-0-main: #000000;--nt-group-0-dark: #000000;--nt-group-0-light: #000000;--nt-group-0-main-bg: #EF9A9A;--nt-group-0-dark-bg: #BA6B6C;--nt-group-0-light-bg: #FFCCCB;--nt-group-1-main: #000000;--nt-group-1-dark: #000000;--nt-group-1-light: #000000;--nt-group-1-main-bg: #F48FB1;--nt-group-1-dark-bg: #BF5F82;--nt-group-1-light-bg: #FFC1E3;--nt-group-2-main: #000000;--nt-group-2-dark: #000000;--nt-group-2-light: #000000;--nt-group-2-main-bg: #CE93D8;--nt-group-2-dark-bg: #9C64A6;--nt-group-2-light-bg: #FFC4FF;--nt-group-3-main: #000000;--nt-group-3-dark: #000000;--nt-group-3-light: #000000;--nt-group-3-main-bg: #B39DDB;--nt-group-3-dark-bg: #836FA9;--nt-group-3-light-bg: #E6CEFF;--nt-group-4-main: #000000;--nt-group-4-dark: #000000;--nt-group-4-light: #000000;--nt-group-4-main-bg: #9FA8DA;--nt-group-4-dark-bg: #6F79A8;--nt-group-4-light-bg: #D1D9FF;--nt-group-5-main: #000000;--nt-group-5-dark: #000000;--nt-group-5-light: #000000;--nt-group-5-main-bg: #90CAF9;--nt-group-5-dark-bg: #5D99C6;--nt-group-5-light-bg: #C3FDFF;--nt-group-6-main: #000000;--nt-group-6-dark: #000000;--nt-group-6-light: #000000;--nt-group-6-main-bg: #81D4FA;--nt-group-6-dark-bg: #4BA3C7;--nt-group-6-light-bg: #B6FFFF;--nt-group-7-main: #000000;--nt-group-7-dark: #000000;--nt-group-7-light: #000000;--nt-group-7-main-bg: #80DEEA;--nt-group-7-dark-bg: #4BACB8;--nt-group-7-light-bg: #B4FFFF;--nt-group-8-main: #000000;--nt-group-8-dark: #000000;--nt-group-8-light: #000000;--nt-group-8-main-bg: #80CBC4;--nt-group-8-dark-bg: #4F9A94;--nt-group-8-light-bg: #B2FEF7;--nt-group-9-main: #000000;--nt-group-9-dark: #000000;--nt-group-9-light: #000000;--nt-group-9-main-bg: #A5D6A7;--nt-group-9-dark-bg: #75A478;--nt-group-9-light-bg: #D7FFD9;--nt-group-10-main: #000000;--nt-group-10-dark: #000000;--nt-group-10-light: #000000;--nt-group-10-main-bg: #C5E1A5;--nt-group-10-dark-bg: #94AF76;--nt-group-10-light-bg: #F8FFD7;--nt-group-11-main: #000000;--nt-group-11-dark: #000000;--nt-group-11-light: #000000;--nt-group-11-main-bg: #E6EE9C;--nt-group-11-dark-bg: #B3BC6D;--nt-group-11-light-bg: #FFFFCE;--nt-group-12-main: #000000;--nt-group-12-dark: #000000;--nt-group-12-light: #000000;--nt-group-12-main-bg: #FFF59D;--nt-group-12-dark-bg: #CBC26D;--nt-group-12-light-bg: #FFFFCF;--nt-group-13-main: #000000;--nt-group-13-dark: #000000;--nt-group-13-light: #000000;--nt-group-13-main-bg: #FFE082;--nt-group-13-dark-bg: #CAAE53;--nt-group-13-light-bg: #FFFFB3;--nt-group-14-main: #000000;--nt-group-14-dark: #000000;--nt-group-14-light: #000000;--nt-group-14-main-bg: #FFCC80;--nt-group-14-dark-bg: #CA9B52;--nt-group-14-light-bg: #FFFFB0;--nt-group-15-main: #000000;--nt-group-15-dark: #000000;--nt-group-15-light: #000000;--nt-group-15-main-bg: #FFAB91;--nt-group-15-dark-bg: #C97B63;--nt-group-15-light-bg: #FFDDC1;--nt-group-16-main: #000000;--nt-group-16-dark: #000000;--nt-group-16-light: #000000;--nt-group-16-main-bg: #BCAAA4;--nt-group-16-dark-bg: #8C7B75;--nt-group-16-light-bg: #EFDCD5;--nt-group-17-main: #000000;--nt-group-17-dark: #000000;--nt-group-17-light: #000000;--nt-group-17-main-bg: #EEEEEE;--nt-group-17-dark-bg: #BCBCBC;--nt-group-17-light-bg: #FFFFFF;--nt-group-18-main: #000000;--nt-group-18-dark: #000000;--nt-group-18-light: #000000;--nt-group-18-main-bg: #B0BEC5;--nt-group-18-dark-bg: #808E95;--nt-group-18-light-bg: #E2F1F8}.nt-group-0 .nt-plan-group-summary,.nt-group-0 .nt-timeline-dot{color:var(--nt-group-0-dark);background-color:var(--nt-group-0-dark-bg)}.nt-group-0 .period{color:var(--nt-group-0-main);background-color:var(--nt-group-0-main-bg)}.nt-group-1 .nt-plan-group-summary,.nt-group-1 .nt-timeline-dot{color:var(--nt-group-1-dark);background-color:var(--nt-group-1-dark-bg)}.nt-group-1 .period{color:var(--nt-group-1-main);background-color:var(--nt-group-1-main-bg)}.nt-group-2 .nt-plan-group-summary,.nt-group-2 .nt-timeline-dot{color:var(--nt-group-2-dark);background-color:var(--nt-group-2-dark-bg)}.nt-group-2 .period{color:var(--nt-group-2-main);background-color:var(--nt-group-2-main-bg)}.nt-group-3 .nt-plan-group-summary,.nt-group-3 .nt-timeline-dot{color:var(--nt-group-3-dark);background-color:var(--nt-group-3-dark-bg)}.nt-group-3 .period{color:var(--nt-group-3-main);background-color:var(--nt-group-3-main-bg)}.nt-group-4 .nt-plan-group-summary,.nt-group-4 .nt-timeline-dot{color:var(--nt-group-4-dark);background-color:var(--nt-group-4-dark-bg)}.nt-group-4 .period{color:var(--nt-group-4-main);background-color:var(--nt-group-4-main-bg)}.nt-group-5 .nt-plan-group-summary,.nt-group-5 .nt-timeline-dot{color:var(--nt-group-5-dark);background-color:var(--nt-group-5-dark-bg)}.nt-group-5 .period{color:var(--nt-group-5-main);background-color:var(--nt-group-5-main-bg)}.nt-group-6 .nt-plan-group-summary,.nt-group-6 .nt-timeline-dot{color:var(--nt-group-6-dark);background-color:var(--nt-group-6-dark-bg)}.nt-group-6 .period{color:var(--nt-group-6-main);background-color:var(--nt-group-6-main-bg)}.nt-group-7 .nt-plan-group-summary,.nt-group-7 .nt-timeline-dot{color:var(--nt-group-7-dark);background-color:var(--nt-group-7-dark-bg)}.nt-group-7 .period{color:var(--nt-group-7-main);background-color:var(--nt-group-7-main-bg)}.nt-group-8 .nt-plan-group-summary,.nt-group-8 .nt-timeline-dot{color:var(--nt-group-8-dark);background-color:var(--nt-group-8-dark-bg)}.nt-group-8 .period{color:var(--nt-group-8-main);background-color:var(--nt-group-8-main-bg)}.nt-group-9 .nt-plan-group-summary,.nt-group-9 .nt-timeline-dot{color:var(--nt-group-9-dark);background-color:var(--nt-group-9-dark-bg)}.nt-group-9 .period{color:var(--nt-group-9-main);background-color:var(--nt-group-9-main-bg)}.nt-group-10 .nt-plan-group-summary,.nt-group-10 .nt-timeline-dot{color:var(--nt-group-10-dark);background-color:var(--nt-group-10-dark-bg)}.nt-group-10 .period{color:var(--nt-group-10-main);background-color:var(--nt-group-10-main-bg)}.nt-group-11 .nt-plan-group-summary,.nt-group-11 .nt-timeline-dot{color:var(--nt-group-11-dark);background-color:var(--nt-group-11-dark-bg)}.nt-group-11 .period{color:var(--nt-group-11-main);background-color:var(--nt-group-11-main-bg)}.nt-group-12 .nt-plan-group-summary,.nt-group-12 .nt-timeline-dot{color:var(--nt-group-12-dark);background-color:var(--nt-group-12-dark-bg)}.nt-group-12 .period{color:var(--nt-group-12-main);background-color:var(--nt-group-12-main-bg)}.nt-group-13 .nt-plan-group-summary,.nt-group-13 .nt-timeline-dot{color:var(--nt-group-13-dark);background-color:var(--nt-group-13-dark-bg)}.nt-group-13 .period{color:var(--nt-group-13-main);background-color:var(--nt-group-13-main-bg)}.nt-group-14 .nt-plan-group-summary,.nt-group-14 .nt-timeline-dot{color:var(--nt-group-14-dark);background-color:var(--nt-group-14-dark-bg)}.nt-group-14 .period{color:var(--nt-group-14-main);background-color:var(--nt-group-14-main-bg)}.nt-group-15 .nt-plan-group-summary,.nt-group-15 .nt-timeline-dot{color:var(--nt-group-15-dark);background-color:var(--nt-group-15-dark-bg)}.nt-group-15 .period{color:var(--nt-group-15-main);background-color:var(--nt-group-15-main-bg)}.nt-group-16 .nt-plan-group-summary,.nt-group-16 .nt-timeline-dot{color:var(--nt-group-16-dark);background-color:var(--nt-group-16-dark-bg)}.nt-group-16 .period{color:var(--nt-group-16-main);background-color:var(--nt-group-16-main-bg)}.nt-group-17 .nt-plan-group-summary,.nt-group-17 .nt-timeline-dot{color:var(--nt-group-17-dark);background-color:var(--nt-group-17-dark-bg)}.nt-group-17 .period{color:var(--nt-group-17-main);background-color:var(--nt-group-17-main-bg)}.nt-group-18 .nt-plan-group-summary,.nt-group-18 .nt-timeline-dot{color:var(--nt-group-18-dark);background-color:var(--nt-group-18-dark-bg)}.nt-group-18 .period{color:var(--nt-group-18-main);background-color:var(--nt-group-18-main-bg)}.nt-error{border:2px dashed darkred;padding:0 1rem;background:#faf9ba;color:darkred}.nt-timeline{margin-top:30px}.nt-timeline .nt-timeline-title{font-size:1.1rem;margin-top:0}.nt-timeline .nt-timeline-sub-title{margin-top:0}.nt-timeline .nt-timeline-content{font-size:.8rem;border-bottom:2px dashed #ccc;padding-bottom:1.2rem}.nt-timeline.horizontal .nt-timeline-items{flex-direction:row;overflow-x:scroll}.nt-timeline.horizontal .nt-timeline-items>div{min-width:400px;margin-right:50px}.nt-timeline.horizontal.reverse .nt-timeline-items{flex-direction:row-reverse}.nt-timeline.horizontal.center .nt-timeline-before{background-image:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 center}.nt-timeline.horizontal.center .nt-timeline-after{background-image:linear-gradient(180deg, rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 center}.nt-timeline.horizontal.center .nt-timeline-items{background-image:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 center}.nt-timeline.horizontal .nt-timeline-dot{left:50%}.nt-timeline.horizontal .nt-timeline-dot:not(.bigger){top:calc(50% - 4px)}.nt-timeline.horizontal .nt-timeline-dot.bigger{top:calc(50% - 15px)}.nt-timeline.vertical .nt-timeline-items{flex-direction:column}.nt-timeline.vertical.reverse .nt-timeline-items{flex-direction:column-reverse}.nt-timeline.vertical.center .nt-timeline-before{background:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%}.nt-timeline.vertical.center .nt-timeline-after{background:linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat center/2px 100%}.nt-timeline.vertical.center .nt-timeline-items{background:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%}.nt-timeline.vertical.center .nt-timeline-dot{left:calc(50% - 10px)}.nt-timeline.vertical.center .nt-timeline-dot:not(.bigger){top:10px}.nt-timeline.vertical.center .nt-timeline-dot.bigger{left:calc(50% - 20px)}.nt-timeline.vertical.left{padding-left:100px}.nt-timeline.vertical.left .nt-timeline-item{padding-left:70px}.nt-timeline.vertical.left .nt-timeline-sub-title{left:-100px;width:100px}.nt-timeline.vertical.left .nt-timeline-before{background:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%}.nt-timeline.vertical.left .nt-timeline-after{background:linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat 30px/2px 100%}.nt-timeline.vertical.left .nt-timeline-items{background:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%}.nt-timeline.vertical.left .nt-timeline-dot{left:21px;top:8px}.nt-timeline.vertical.left .nt-timeline-dot.bigger{top:0px;left:10px}.nt-timeline.vertical.right{padding-right:100px}.nt-timeline.vertical.right .nt-timeline-sub-title{right:-100px;text-align:left;width:100px}.nt-timeline.vertical.right .nt-timeline-item{padding-right:70px}.nt-timeline.vertical.right .nt-timeline-before{background:linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%}.nt-timeline.vertical.right .nt-timeline-after{background:linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat calc(100% - 30px)/2px 100%}.nt-timeline.vertical.right .nt-timeline-items{background:radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%}.nt-timeline.vertical.right .nt-timeline-dot{right:21px;top:8px}.nt-timeline.vertical.right .nt-timeline-dot.bigger{top:10px;right:10px}.nt-timeline-items{display:flex;position:relative}.nt-timeline-items>div{min-height:100px;padding-top:2px;padding-bottom:20px}.nt-timeline-before{content:"";height:15px}.nt-timeline-after{content:"";height:60px;margin-bottom:20px}.nt-timeline-sub-title{position:absolute;width:50%;top:4px;font-size:18px;color:var(--nt-color-50)}[data-md-color-scheme=slate] .nt-timeline-sub-title{color:var(--nt-color-51)}.nt-timeline-item{position:relative}.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item{padding-left:calc(50% + 40px)}.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title{left:0;padding-right:40px;text-align:right}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd){padding-left:calc(50% + 40px)}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title{left:0;padding-right:40px;text-align:right}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even){text-align:right;padding-right:calc(50% + 40px)}.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title{right:0;padding-left:40px;text-align:left}.nt-timeline-dot{position:relative;width:20px;height:20px;border-radius:100%;background-color:#fc5b5b;position:absolute;top:0px;z-index:2;display:flex;justify-content:center;align-items:center;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);border:3px solid #fff}.nt-timeline-dot:not(.bigger) .icon{font-size:10px}.nt-timeline-dot.bigger{width:40px;height:40px;padding:3px}.nt-timeline-dot .icon{color:#fff}@supports not (-moz-appearance: none){details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title,details .nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title{left:-40px}details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title{right:-40px}details .nt-timeline.vertical.center .nt-timeline-dot{left:calc(50% - 12px)}details .nt-timeline-dot.bigger{font-size:1rem !important}}.nt-timeline-item:nth-child(0) .nt-timeline-dot{background-color:var(--nt-color-0)}.nt-timeline-item:nth-child(1) .nt-timeline-dot{background-color:var(--nt-color-1)}.nt-timeline-item:nth-child(2) .nt-timeline-dot{background-color:var(--nt-color-2)}.nt-timeline-item:nth-child(3) .nt-timeline-dot{background-color:var(--nt-color-3)}.nt-timeline-item:nth-child(4) .nt-timeline-dot{background-color:var(--nt-color-4)}.nt-timeline-item:nth-child(5) .nt-timeline-dot{background-color:var(--nt-color-5)}.nt-timeline-item:nth-child(6) .nt-timeline-dot{background-color:var(--nt-color-6)}.nt-timeline-item:nth-child(7) .nt-timeline-dot{background-color:var(--nt-color-7)}.nt-timeline-item:nth-child(8) .nt-timeline-dot{background-color:var(--nt-color-8)}.nt-timeline-item:nth-child(9) .nt-timeline-dot{background-color:var(--nt-color-9)}.nt-timeline-item:nth-child(10) .nt-timeline-dot{background-color:var(--nt-color-10)}.nt-timeline-item:nth-child(11) .nt-timeline-dot{background-color:var(--nt-color-11)}.nt-timeline-item:nth-child(12) .nt-timeline-dot{background-color:var(--nt-color-12)}.nt-timeline-item:nth-child(13) .nt-timeline-dot{background-color:var(--nt-color-13)}.nt-timeline-item:nth-child(14) .nt-timeline-dot{background-color:var(--nt-color-14)}.nt-timeline-item:nth-child(15) .nt-timeline-dot{background-color:var(--nt-color-15)}.nt-timeline-item:nth-child(16) .nt-timeline-dot{background-color:var(--nt-color-16)}.nt-timeline-item:nth-child(17) .nt-timeline-dot{background-color:var(--nt-color-17)}.nt-timeline-item:nth-child(18) .nt-timeline-dot{background-color:var(--nt-color-18)}.nt-timeline-item:nth-child(19) .nt-timeline-dot{background-color:var(--nt-color-19)}.nt-timeline-item:nth-child(20) .nt-timeline-dot{background-color:var(--nt-color-20)}:root{--nt-scrollbar-color: #2751b0;--nt-plan-actions-height: 24px;--nt-units-background: #ff9800;--nt-months-background: #2751b0;--nt-plan-vertical-line-color: #a3a3a3ad}.nt-pastello{--nt-scrollbar-color: #9fb8f4;--nt-units-background: #f5dc82;--nt-months-background: #5b7fd1}[data-md-color-scheme=slate]{--nt-units-background: #003773}[data-md-color-scheme=slate] .nt-pastello{--nt-units-background: #3f4997}.nt-plan-root{min-height:200px;scrollbar-width:20px;scrollbar-color:var(--nt-scrollbar-color);display:flex}.nt-plan-root ::-webkit-scrollbar{width:20px}.nt-plan-root ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:10px}.nt-plan-root ::-webkit-scrollbar-thumb{background:var(--nt-scrollbar-color);border-radius:10px}.nt-plan-root .nt-plan{flex:80%}.nt-plan-root.no-groups .nt-plan-periods{padding-left:0}.nt-plan-root.no-groups .nt-plan-group-summary{display:none}.nt-plan-root .nt-timeline-dot.bigger{top:-10px}.nt-plan-root .nt-timeline-dot.bigger[title]{cursor:help}.nt-plan{white-space:nowrap;overflow-x:auto;display:flex}.nt-plan .ug-timeline-dot{left:368px;top:-8px;cursor:help}.months{display:flex}.month{flex:auto;display:inline-block;box-shadow:rgba(0,0,0,.2) 0px 3px 1px -2px,rgba(0,0,0,.14) 0px 2px 2px 0px,rgba(0,0,0,.12) 0px 1px 5px 0px inset;background-color:var(--nt-months-background);color:#fff;text-transform:uppercase;font-family:Roboto,Helvetica,Arial,sans-serif;padding:2px 5px;font-size:12px;border:1px solid #000;width:150px;border-radius:8px}.nt-plan-group-activities{flex:auto;position:relative}.nt-vline{border-left:1px dashed var(--nt-plan-vertical-line-color);height:100%;left:0;position:absolute;margin-left:-0.5px;top:0;-webkit-transition:all .5s linear !important;-moz-transition:all .5s linear !important;-ms-transition:all .5s linear !important;-o-transition:all .5s linear !important;transition:all .5s linear !important;z-index:-2}.nt-plan-activity{display:flex;margin:2px 0;background-color:rgba(187,187,187,.2509803922)}.actions{height:var(--nt-plan-actions-height)}.actions{position:relative}.period{display:inline-block;height:var(--nt-plan-actions-height);width:120px;position:absolute;left:0px;background:#1da1f2;border-radius:5px;transition:all .5s;cursor:help;-webkit-transition:width 1s ease-in-out;-moz-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}.period .nt-tooltip{display:none;top:30px;position:relative;padding:1rem;text-align:center;font-size:12px}.period:hover .nt-tooltip{display:inline-block}.period-0{left:340px;visibility:visible;background-color:#456165}.period-1{left:40px;visibility:visible;background-color:green}.period-2{left:120px;visibility:visible;background-color:pink;width:80px}.period-3{left:190px;visibility:visible;background-color:darkred;width:150px}.weeks>span,.days>span{height:25px}.weeks>span{display:inline-block;margin:0;padding:0;font-weight:bold}.weeks>span .week-text{font-size:10px;position:absolute;display:inline-block;padding:3px 4px}.days{z-index:-2;position:relative}.day-text{font-size:10px;position:absolute;display:inline-block;padding:3px 4px}.period span{font-size:12px;vertical-align:top;margin-left:4px;color:#000;background:rgba(255,255,255,.6588235294);border-radius:6px;padding:0 4px}.weeks,.days{height:20px;display:flex;box-sizing:content-box}.months{display:flex}.week,.day{height:20px;position:relative;border:1;flex:auto;border:2px solid #fff;border-radius:4px;background-color:var(--nt-units-background);cursor:help}.years{display:flex}.year{text-align:center;border-right:1px solid var(--nt-plan-vertical-line-color);font-weight:bold}.year:first-child{border-left:1px solid var(--nt-plan-vertical-line-color)}.year:first-child:last-child{width:100%}.quarters{display:flex}.quarter{width:12.5%;text-align:center;border-right:1px solid var(--nt-plan-vertical-line-color);font-weight:bold}.quarter:first-child{border-left:1px solid var(--nt-plan-vertical-line-color)}.nt-plan-group{margin:20px 0;position:relative}.nt-plan-group{display:flex}.nt-plan-group-summary{background:#2751b0;width:150px;white-space:normal;padding:.1rem .5rem;border-radius:5px;color:#fff;z-index:3}.nt-plan-group-summary p{margin:0;padding:0;font-size:.6rem;color:#fff}.nt-plan-group-summary,.month,.period,.week,.day,.nt-tooltip{border:3px solid #fff;box-shadow:0 2px 3px -1px rgba(0,0,0,.2),0 3px 3px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.nt-plan-periods{padding-left:150px}.months{z-index:2;position:relative}.weeks{position:relative;top:-2px;z-index:0}.month,.quarter,.year,.week,.day,.nt-tooltip{font-family:Roboto,Helvetica,Arial,sans-serif;box-sizing:border-box}.nt-cards.nt-grid{display:grid;grid-auto-columns:1fr;gap:.5rem;max-width:100vw;overflow-x:auto;padding:1px}.nt-cards.nt-grid.cols-1{grid-template-columns:repeat(1, 1fr)}.nt-cards.nt-grid.cols-2{grid-template-columns:repeat(2, 1fr)}.nt-cards.nt-grid.cols-3{grid-template-columns:repeat(3, 1fr)}.nt-cards.nt-grid.cols-4{grid-template-columns:repeat(4, 1fr)}.nt-cards.nt-grid.cols-5{grid-template-columns:repeat(5, 1fr)}.nt-cards.nt-grid.cols-6{grid-template-columns:repeat(6, 1fr)}@media only screen and (max-width: 400px){.nt-cards.nt-grid{grid-template-columns:repeat(1, 1fr) !important}}.nt-card{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.nt-card:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.24),0 3px 1px -2px rgba(0,0,0,.3),0 1px 5px 0 rgba(0,0,0,.22)}[data-md-color-scheme=slate] .nt-card{box-shadow:0 2px 2px 0 rgba(4,40,33,.14),0 3px 1px -2px rgba(40,86,94,.47),0 1px 5px 0 rgba(139,252,255,.64)}[data-md-color-scheme=slate] .nt-card:hover{box-shadow:0 2px 2px 0 rgba(0,255,206,.14),0 3px 1px -2px rgba(33,156,177,.47),0 1px 5px 0 rgba(96,251,255,.64)}.nt-card>a{color:var(--md-default-fg-color)}.nt-card>a>div{cursor:pointer}.nt-card{padding:5px;margin-bottom:.5rem}.nt-card-title{font-size:1rem;font-weight:bold;margin:4px 0 8px 0;line-height:22px}.nt-card-content{padding:.4rem .8rem .8rem .8rem}.nt-card-text{font-size:14px;padding:0;margin:0}.nt-card .nt-card-image{text-align:center;border-radius:2px;background-position:center center;background-size:cover;background-repeat:no-repeat;min-height:120px}.nt-card .nt-card-image.tags img{margin-top:12px}.nt-card .nt-card-image img{height:105px;margin-top:5px}.nt-card a:hover,.nt-card a:focus{color:var(--md-accent-fg-color)}.nt-card h2{margin:0}.span-table-wrapper table{border-collapse:collapse;margin-bottom:2rem;border-radius:.1rem}.span-table td,.span-table th{padding:.2rem;background-color:var(--md-default-bg-color);font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto;border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.span-table tr:first-child td{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.span-table td:first-child{border-left:.05rem solid var(--md-typeset-table-color)}.span-table td:last-child{border-right:.05rem solid var(--md-typeset-table-color)}.span-table tr:last-child{border-bottom:.05rem solid var(--md-typeset-table-color)}.span-table [colspan],.span-table [rowspan]{font-weight:bold;border:.05rem solid var(--md-typeset-table-color)}.span-table tr:not(:first-child):hover td:not([colspan]):not([rowspan]),.span-table td[colspan]:hover,.span-table td[rowspan]:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset;transition:background-color 125ms}
diff --git a/docs/docs/css/neoteroi-spantable.css b/docs/docs/css/neoteroi-spantable.css
new file mode 100644
index 00000000..be069a85
--- /dev/null
+++ b/docs/docs/css/neoteroi-spantable.css
@@ -0,0 +1,56 @@
+/**
+ * Extra CSS file recommended for MkDocs and neoteroi.spantable extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+.span-table-wrapper table {
+ border-collapse: collapse;
+ margin-bottom: 2rem;
+ border-radius: 0.1rem;
+}
+
+.span-table td,
+.span-table th {
+ padding: 0.2rem;
+ background-color: var(--md-default-bg-color);
+ font-size: 0.64rem;
+ max-width: 100%;
+ overflow: auto;
+ touch-action: auto;
+ border-top: 0.05rem solid var(--md-typeset-table-color);
+ padding: 0.9375em 1.25em;
+ vertical-align: top;
+}
+
+.span-table tr:first-child td {
+ font-weight: 700;
+ min-width: 5rem;
+ padding: 0.9375em 1.25em;
+ vertical-align: top;
+}
+
+.span-table td:first-child {
+ border-left: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table td:last-child {
+ border-right: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table tr:last-child {
+ border-bottom: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table [colspan],
+.span-table [rowspan] {
+ font-weight: bold;
+ border: 0.05rem solid var(--md-typeset-table-color);
+}
+
+.span-table tr:not(:first-child):hover td:not([colspan]):not([rowspan]),
+.span-table td[colspan]:hover,
+.span-table td[rowspan]:hover {
+ background-color: rgba(0, 0, 0, 0.035);
+ box-shadow: 0 0.05rem 0 var(--md-default-bg-color) inset;
+ transition: background-color 125ms;
+}
diff --git a/docs/docs/css/neoteroi-timeline.css b/docs/docs/css/neoteroi-timeline.css
new file mode 100644
index 00000000..68220895
--- /dev/null
+++ b/docs/docs/css/neoteroi-timeline.css
@@ -0,0 +1,340 @@
+/**
+ * Extra CSS file for MkDocs and the neoteroi.timeline extension.
+ *
+ * https://github.com/Neoteroi/mkdocs-plugins
+**/
+.nt-error {
+ border: 2px dashed darkred;
+ padding: 0 1rem;
+ background: #faf9ba;
+ color: darkred;
+}
+
+.nt-timeline {
+ margin-top: 30px;
+}
+.nt-timeline .nt-timeline-title {
+ font-size: 1.1rem;
+ margin-top: 0;
+}
+.nt-timeline .nt-timeline-sub-title {
+ margin-top: 0;
+}
+.nt-timeline .nt-timeline-content {
+ font-size: 0.8rem;
+ border-bottom: 2px dashed #ccc;
+ padding-bottom: 1.2rem;
+}
+.nt-timeline.horizontal .nt-timeline-items {
+ flex-direction: row;
+ overflow-x: scroll;
+}
+.nt-timeline.horizontal .nt-timeline-items > div {
+ min-width: 400px;
+ margin-right: 50px;
+}
+.nt-timeline.horizontal.reverse .nt-timeline-items {
+ flex-direction: row-reverse;
+}
+.nt-timeline.horizontal.center .nt-timeline-before {
+ background-image: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%);
+ background-repeat: no-repeat;
+ background-size: 100% 2px;
+ background-position: 0 center;
+}
+.nt-timeline.horizontal.center .nt-timeline-after {
+ background-image: linear-gradient(180deg, rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%);
+ background-repeat: no-repeat;
+ background-size: 100% 2px;
+ background-position: 0 center;
+}
+.nt-timeline.horizontal.center .nt-timeline-items {
+ background-image: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%);
+ background-repeat: no-repeat;
+ background-size: 100% 2px;
+ background-position: 0 center;
+}
+.nt-timeline.horizontal .nt-timeline-dot {
+ left: 50%;
+}
+.nt-timeline.horizontal .nt-timeline-dot:not(.bigger) {
+ top: calc(50% - 4px);
+}
+.nt-timeline.horizontal .nt-timeline-dot.bigger {
+ top: calc(50% - 15px);
+}
+.nt-timeline.vertical .nt-timeline-items {
+ flex-direction: column;
+}
+.nt-timeline.vertical.reverse .nt-timeline-items {
+ flex-direction: column-reverse;
+}
+.nt-timeline.vertical.center .nt-timeline-before {
+ background: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%;
+}
+.nt-timeline.vertical.center .nt-timeline-after {
+ background: linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat center/2px 100%;
+}
+.nt-timeline.vertical.center .nt-timeline-items {
+ background: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat center/2px 100%;
+}
+.nt-timeline.vertical.center .nt-timeline-dot {
+ left: calc(50% - 10px);
+}
+.nt-timeline.vertical.center .nt-timeline-dot:not(.bigger) {
+ top: 10px;
+}
+.nt-timeline.vertical.center .nt-timeline-dot.bigger {
+ left: calc(50% - 20px);
+}
+.nt-timeline.vertical.left {
+ padding-left: 100px;
+}
+.nt-timeline.vertical.left .nt-timeline-item {
+ padding-left: 70px;
+}
+.nt-timeline.vertical.left .nt-timeline-sub-title {
+ left: -100px;
+ width: 100px;
+}
+.nt-timeline.vertical.left .nt-timeline-before {
+ background: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%;
+}
+.nt-timeline.vertical.left .nt-timeline-after {
+ background: linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat 30px/2px 100%;
+}
+.nt-timeline.vertical.left .nt-timeline-items {
+ background: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat 30px/2px 100%;
+}
+.nt-timeline.vertical.left .nt-timeline-dot {
+ left: 21px;
+ top: 8px;
+}
+.nt-timeline.vertical.left .nt-timeline-dot.bigger {
+ top: 0px;
+ left: 10px;
+}
+.nt-timeline.vertical.right {
+ padding-right: 100px;
+}
+.nt-timeline.vertical.right .nt-timeline-sub-title {
+ right: -100px;
+ text-align: left;
+ width: 100px;
+}
+.nt-timeline.vertical.right .nt-timeline-item {
+ padding-right: 70px;
+}
+.nt-timeline.vertical.right .nt-timeline-before {
+ background: linear-gradient(rgba(252, 70, 107, 0) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%;
+}
+.nt-timeline.vertical.right .nt-timeline-after {
+ background: linear-gradient(rgb(252, 70, 107) 0%, rgba(252, 70, 107, 0) 100%) no-repeat calc(100% - 30px)/2px 100%;
+}
+.nt-timeline.vertical.right .nt-timeline-items {
+ background: radial-gradient(circle, rgb(63, 94, 251) 0%, rgb(252, 70, 107) 100%) no-repeat calc(100% - 30px)/2px 100%;
+}
+.nt-timeline.vertical.right .nt-timeline-dot {
+ right: 21px;
+ top: 8px;
+}
+.nt-timeline.vertical.right .nt-timeline-dot.bigger {
+ top: 10px;
+ right: 10px;
+}
+
+.nt-timeline-items {
+ display: flex;
+ position: relative;
+}
+.nt-timeline-items > div {
+ min-height: 100px;
+ padding-top: 2px;
+ padding-bottom: 20px;
+}
+
+.nt-timeline-before {
+ content: "";
+ height: 15px;
+}
+
+.nt-timeline-after {
+ content: "";
+ height: 60px;
+ margin-bottom: 20px;
+}
+
+.nt-timeline-sub-title {
+ position: absolute;
+ width: 50%;
+ top: 4px;
+ font-size: 18px;
+ color: var(--nt-color-50);
+}
+
+[data-md-color-scheme=slate] .nt-timeline-sub-title {
+ color: var(--nt-color-51);
+}
+
+.nt-timeline-item {
+ position: relative;
+}
+
+.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item {
+ padding-left: calc(50% + 40px);
+}
+.nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title {
+ left: 0;
+ padding-right: 40px;
+ text-align: right;
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) {
+ padding-left: calc(50% + 40px);
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title {
+ left: 0;
+ padding-right: 40px;
+ text-align: right;
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) {
+ text-align: right;
+ padding-right: calc(50% + 40px);
+}
+.nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title {
+ right: 0;
+ padding-left: 40px;
+ text-align: left;
+}
+
+.nt-timeline-dot {
+ position: relative;
+ width: 20px;
+ height: 20px;
+ border-radius: 100%;
+ background-color: #fc5b5b;
+ position: absolute;
+ top: 0px;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+ border: 3px solid white;
+}
+.nt-timeline-dot:not(.bigger) .icon {
+ font-size: 10px;
+}
+.nt-timeline-dot.bigger {
+ width: 40px;
+ height: 40px;
+ padding: 3px;
+}
+.nt-timeline-dot .icon {
+ color: white;
+}
+
+/* Fix for webkit (Chrome, Safari) */
+@supports not (-moz-appearance: none) {
+ /*
+ This fix is necessary, for some reason, to render the timeline properly
+ inside `details` elements used by pymdownx. Firefox doesn't need this fix,
+ it renders elements properly.
+ */
+ details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(odd) .nt-timeline-sub-title,
+details .nt-timeline.vertical.center:not(.alternate) .nt-timeline-item .nt-timeline-sub-title {
+ left: -40px;
+ }
+ details .nt-timeline.vertical.center.alternate .nt-timeline-item:nth-child(even) .nt-timeline-sub-title {
+ right: -40px;
+ }
+ details .nt-timeline.vertical.center .nt-timeline-dot {
+ left: calc(50% - 12px);
+ }
+ details .nt-timeline-dot.bigger {
+ font-size: 1rem !important;
+ }
+}
+/* default colors */
+.nt-timeline-item:nth-child(0) .nt-timeline-dot {
+ background-color: var(--nt-color-0);
+}
+
+.nt-timeline-item:nth-child(1) .nt-timeline-dot {
+ background-color: var(--nt-color-1);
+}
+
+.nt-timeline-item:nth-child(2) .nt-timeline-dot {
+ background-color: var(--nt-color-2);
+}
+
+.nt-timeline-item:nth-child(3) .nt-timeline-dot {
+ background-color: var(--nt-color-3);
+}
+
+.nt-timeline-item:nth-child(4) .nt-timeline-dot {
+ background-color: var(--nt-color-4);
+}
+
+.nt-timeline-item:nth-child(5) .nt-timeline-dot {
+ background-color: var(--nt-color-5);
+}
+
+.nt-timeline-item:nth-child(6) .nt-timeline-dot {
+ background-color: var(--nt-color-6);
+}
+
+.nt-timeline-item:nth-child(7) .nt-timeline-dot {
+ background-color: var(--nt-color-7);
+}
+
+.nt-timeline-item:nth-child(8) .nt-timeline-dot {
+ background-color: var(--nt-color-8);
+}
+
+.nt-timeline-item:nth-child(9) .nt-timeline-dot {
+ background-color: var(--nt-color-9);
+}
+
+.nt-timeline-item:nth-child(10) .nt-timeline-dot {
+ background-color: var(--nt-color-10);
+}
+
+.nt-timeline-item:nth-child(11) .nt-timeline-dot {
+ background-color: var(--nt-color-11);
+}
+
+.nt-timeline-item:nth-child(12) .nt-timeline-dot {
+ background-color: var(--nt-color-12);
+}
+
+.nt-timeline-item:nth-child(13) .nt-timeline-dot {
+ background-color: var(--nt-color-13);
+}
+
+.nt-timeline-item:nth-child(14) .nt-timeline-dot {
+ background-color: var(--nt-color-14);
+}
+
+.nt-timeline-item:nth-child(15) .nt-timeline-dot {
+ background-color: var(--nt-color-15);
+}
+
+.nt-timeline-item:nth-child(16) .nt-timeline-dot {
+ background-color: var(--nt-color-16);
+}
+
+.nt-timeline-item:nth-child(17) .nt-timeline-dot {
+ background-color: var(--nt-color-17);
+}
+
+.nt-timeline-item:nth-child(18) .nt-timeline-dot {
+ background-color: var(--nt-color-18);
+}
+
+.nt-timeline-item:nth-child(19) .nt-timeline-dot {
+ background-color: var(--nt-color-19);
+}
+
+.nt-timeline-item:nth-child(20) .nt-timeline-dot {
+ background-color: var(--nt-color-20);
+}
diff --git a/docs/docs/index.md b/docs/docs/index.md
new file mode 100644
index 00000000..1a2b40e4
--- /dev/null
+++ b/docs/docs/index.md
@@ -0,0 +1,19 @@
+---
+hide:
+ - path
+ - navigation
+ - toc
+---
+
+HydroRollCore
+
+ HydroRollCore 是一个规则包读取与处理分发用工具,通过读取一个一个规则包实现水系骰子掷骰规则,同时支持模板创建与Wiki站点辅助设计规则书内容。
+ 它是世界主入门水系的关键。
+
+
+ 什么是规则包 +
diff --git a/docs/docs/javascripts/.gitkeep b/docs/docs/javascripts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/docs/res/main.pdf b/docs/docs/res/main.pdf new file mode 100644 index 00000000..4ec4dd73 Binary files /dev/null and b/docs/docs/res/main.pdf differ diff --git a/docs/docs/showcase/index.md b/docs/docs/showcase/index.md new file mode 100644 index 00000000..f58ab2fe --- /dev/null +++ b/docs/docs/showcase/index.md @@ -0,0 +1,24 @@ +--- +hide: + - navigation + - toc + - path +--- + +::gantt:: + +- title: Definition Phase + activities: + - title: Creative Brief + start: 2023-07-21 + end: 2023-08-21 + lasts: 1 months + - title: Graphic Design Research + start: 2023-08-22 + end: 2023-08-30 + lasts: 2 weeks + - title: Brainstorming / Mood Boarding + start: 2023-08-31 + end: 2023-12-20 + +::/gantt:: diff --git a/docs/docs/stylesheets/.gitkeep b/docs/docs/stylesheets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml new file mode 100644 index 00000000..93c758d6 --- /dev/null +++ b/docs/mkdocs.yml @@ -0,0 +1,150 @@ +site_name: HydroRollCore 核心文档 (草案) +repo_url: https://github.com/HydroRoll-Team/HydroRollCore +repo_name: HydroRoll-Team/HydroRollCore +edit_uri: edit/master/docs/docs/ +site_author: Hsiang Nianian +site_description: >- + HydroRollCore -- 水系核心,一个基于通用规则包标准的规则包读取框架。 + +theme: + name: material + language: zh + icon: + logo: material/library-outline + repo: fontawesome/brands/git-alt + custom_dir: overrides + features: + - content.action.edit + - content.action.view + - navigation.footer + - navigation.tabs + # - navigation.tabs.sticky + - navigation.sections + - navigation.expand + - navigation.path + - navigation.indexes + - toc.follow + - navigation.top + - search.highlight + - search.suggest + - search.share + - header.autohide + - navigation.footer + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to system preference + +extra: + homepage: https://HydroRollCore.retrofor.space + alternate: + # - name: English + # link: /en/ + # lang: en + - name: 中文 + link: / + lang: zh + consent: + title: Cookie 偏好设置 + description: >- + 我们使用Cookie来识别您的重复访问和偏好,以及衡量我们的文档的有效性和用户是否找到他们搜索的内容。在您的同意下,这将帮助我们改善我们的文档。 + actions: + - accept + - manage + cookies: + analytics: + name: Google Analytics + checked: true + github: + name: GitHub + checked: true + + social: + - icon: fontawesome/brands/github + link: https://github.com/HydroRoll-Team + +extra_css: + - stylesheets/extra.css + - css/neoteroi-mkdocs.css + +extra_javascript: + - javascripts/extra.js + +copyright: > + Copyright © 2013 - PRESENT. HydroRoll-Team – + 管理Cookie + +markdown_extensions: + - neoteroi.timeline + - neoteroi.cards + - neoteroi.projects + - neoteroi.spantable + - abbr + - admonition + - attr_list + - def_list + - footnotes + - md_in_html + - toc: + permalink: true + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem: + smart_enable: all + - pymdownx.caret + - pymdownx.details + - pymdownx.emoji: + emoji_generator: !!python/name:materialx.emoji.to_svg + emoji_index: !!python/name:materialx.emoji.twemoji + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.magiclink: + repo_url_shorthand: true + user: squidfunk + repo: mkdocs-material + - pymdownx.mark + - pymdownx.smartsymbols + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.tilde + +plugins: + - blog + - search + - git-authors + - git-revision-date-localized: + enable_creation_date: true + fallback_to_build_date: true + timezone: Asia/Shanghai + type: timeago + custom_format: "%d. %B %Y" + # - git-committers: + # repository: HydroRoll-Team/psi + # branch: main \ No newline at end of file diff --git a/docs/overrides/.gitkeep b/docs/overrides/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 00000000..d07c0ab0 --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,13 @@ +{% extends "base.html" %} + +{% block content %} + {{ super() }} + + {% if git_page_authors %} +Launch
+2022-Q1First implementation.
+One
+2022-Q2Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Two
+2022-Q3Lorem ipsum dolor sit amet.
+Three
+2022-Q4Lorem ipsum dolor sit amet.
+ +Last modified on: 2023-07-25 12:37:11
Psi is a new programming language designed with simplicity, flexibility, and performance in mind. It provides a clean and intuitive syntax that is easy to read and write, making it an excellent choice for both beginners and experienced programmers.
+Lexer Module_: The lexer module is responsible for converting the source code into a sequence of tokens. It recognizes the basic elements of the language such as identifiers, keywords, operators, and literals. ['OPERATOR', 'IDENTIFIER', 'SEPARATOR', 'SEPARATOR', 'CONTROL', 'IDENTIFIER', 'OPERATOR', 'INTEGER', 'SEPARATOR', 'IDENTIFIER', 'SEPARATOR', 'IDENTIFIER', 'OPERATOR', 'IDENTIFIER', 'SEPARATOR', 'IDENTIFIER', 'SEPARATOR', 'EOF']
Parser Module_: The parser module takes the sequence of tokens generated by the lexer module and transforms it into an Abstract Syntax Tree (AST). The AST is a tree-like data structure that represents the source code in a way that is closer to the syntactic structure of the programming language.
Built-in Types Module_: This module defines the built-in types of the Psi language, such as lists and dictionaries. It provides functions for creating and manipulating instances of these types.
Error Handling Module_: This module provides a mechanism for catching and handling errors during runtime. It defines a set of exception classes and functions for throwing and catching these exceptions.
Execution Environment Module_: This module defines the execution environment of the Psi language, including the scope and lifecycle of variables. It provides functions for defining and looking up variables in the execution environment.
Interpreter Module_: The main task of this module is to traverse the AST and perform the corresponding operations in the execution environment.
Mathematics Foundation Module_: This module provides basic mathematical functions and constants, such as addition, subtraction, multiplication, and division.
Documentation Module_: This module uses reStructuredText and Sphinx to build the documentation, providing API interface descriptions and usage examples.
To get started with Psi, you can clone the repository and follow the instructions in the README file. The repository includes a comprehensive set of examples that demonstrate the various features of the language.
+Contributions to the Psi project are welcome. If you have a feature request, bug report, or proposal for improvement, please open an issue on the project's GitHub page. If you wish to contribute code, please fork the repository and submit a pull request.
+How to build docs
+git clone https://github.com/HydroRoll-Team/psi.git
+cd psi/psi/docs
+sphinx-build -b html . _build/html
+
+Psi is open-source software, licensed under the MIT license. This means you are free to use, modify, and distribute it under the terms of this license.
+Last modified on: 2023-07-25 12:37:11
Psi is a new programming language designed with simplicity, flexibility, and performance in mind. It provides a clean and intuitive syntax that is easy to read and write, making it an excellent choice for both beginners and experienced programmers.
"},{"location":"#features","title":"Features","text":"Lexer Module_: The lexer module is responsible for converting the source code into a sequence of tokens. It recognizes the basic elements of the language such as identifiers, keywords, operators, and literals. ['OPERATOR', 'IDENTIFIER', 'SEPARATOR', 'SEPARATOR', 'CONTROL', 'IDENTIFIER', 'OPERATOR', 'INTEGER', 'SEPARATOR', 'IDENTIFIER', 'SEPARATOR', 'IDENTIFIER', 'OPERATOR', 'IDENTIFIER', 'SEPARATOR', 'IDENTIFIER', 'SEPARATOR', 'EOF']
Parser Module_: The parser module takes the sequence of tokens generated by the lexer module and transforms it into an Abstract Syntax Tree (AST). The AST is a tree-like data structure that represents the source code in a way that is closer to the syntactic structure of the programming language.
Built-in Types Module_: This module defines the built-in types of the Psi language, such as lists and dictionaries. It provides functions for creating and manipulating instances of these types.
Error Handling Module_: This module provides a mechanism for catching and handling errors during runtime. It defines a set of exception classes and functions for throwing and catching these exceptions.
Execution Environment Module_: This module defines the execution environment of the Psi language, including the scope and lifecycle of variables. It provides functions for defining and looking up variables in the execution environment.
Interpreter Module_: The main task of this module is to traverse the AST and perform the corresponding operations in the execution environment.
Mathematics Foundation Module_: This module provides basic mathematical functions and constants, such as addition, subtraction, multiplication, and division.
Documentation Module_: This module uses reStructuredText and Sphinx to build the documentation, providing API interface descriptions and usage examples.
To get started with Psi, you can clone the repository and follow the instructions in the README file. The repository includes a comprehensive set of examples that demonstrate the various features of the language.
"},{"location":"#contributing","title":"Contributing","text":"Contributions to the Psi project are welcome. If you have a feature request, bug report, or proposal for improvement, please open an issue on the project's GitHub page. If you wish to contribute code, please fork the repository and submit a pull request.
How to build docs
git clone https://github.com/HydroRoll-Team/psi.git\ncd psi/psi/docs\nsphinx-build -b html . _build/html\n"},{"location":"#license","title":"License","text":"Psi is open-source software, licensed under the MIT license. This means you are free to use, modify, and distribute it under the terms of this license.
Last modified on: 2023-07-25 12:37:11
\u7b80"},{"location":"blog/","title":"Index","text":"Last modified on: 2023-07-25 12:37:11
\u7b80"},{"location":"changelog/","title":"Index","text":"Launch
2022-Q1First implementation.
:fontawesome-rocket:One
2022-Q2Lorem ipsum dolor sit amet, consectetur adipiscing elit.
:octicons-sun-16:Two
2022-Q3Lorem ipsum dolor sit amet.
:material-github:Three
2022-Q4Lorem ipsum dolor sit amet.
Last modified on: 2023-07-25 12:37:11
\u7b80"}]} \ No newline at end of file diff --git a/docs/site/sitemap.xml b/docs/site/sitemap.xml new file mode 100644 index 00000000..0f8724ef --- /dev/null +++ b/docs/site/sitemap.xml @@ -0,0 +1,3 @@ + +