diff --git a/docs/index.html b/docs/index.html
index 3f44faa33..11283b43e 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -96,30 +96,6 @@
-
-
-
-

-
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-
-
500 幅动画图解、14 种编程语言代码、3000 条社区问答,助你快速入门数据结构与算法
-
-
-
@@ -166,6 +142,7 @@
+ 500 幅动画图解、14 种编程语言代码、3000 条社区问答,助你快速入门数据结构与算法
@@ -272,9 +249,10 @@
-
+
-
代码审阅者
+
代码译者
+
本书多语言代码版本由以下开发者协力完成,感谢他们的投入与贡献!
-
\ No newline at end of file
+
diff --git a/overrides/javascripts/starfield.js b/overrides/javascripts/starfield.js
index f7dc4a1bc..ab872c0a3 100644
--- a/overrides/javascripts/starfield.js
+++ b/overrides/javascripts/starfield.js
@@ -25,7 +25,7 @@
baseSpeed: 1, // Base speed of stars (will affect acceleration)
trailLength: 0.8, // Length of star trail (0-1)
starColor: "rgb(255, 255, 255)", // Color of stars (only rgb)
- canvasColor: "rgb(0, 0, 0)", // Canvas background color (only rgb)
+ canvasColor: "rgb(30, 30, 30)", // Canvas background color (only rgb)
hueJitter: 0, // Maximum hue variation in degrees (0-360)
maxAcceleration: 10, // Maximum acceleration
accelerationRate: 0.2, // Rate of acceleration
diff --git a/overrides/main.html b/overrides/main.html
index 46ba34738..d67c25706 100644
--- a/overrides/main.html
+++ b/overrides/main.html
@@ -9,6 +9,8 @@
{% set announcements = 'Welcome to contribute to Chinese-to-English translation! For more details, please refer to
CONTRIBUTING.md.' %}
{% elif config.theme.language == 'ja' %}
{% set announcements = '日本語版審閱者を募集しています!詳細は
CONTRIBUTING.md を参照してください。' %}
+{% elif config.theme.language == 'ru' %}
+ {% set announcements = 'Приглашаем вас участвовать в развитии русской версии! Подробнее
здесь.' %}
{% endif %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/overrides/partials/.gitignore b/overrides/partials/.gitignore
deleted file mode 100644
index 3eebfb928..000000000
--- a/overrides/partials/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-comments.html
\ No newline at end of file
diff --git a/overrides/partials/comments.html b/overrides/partials/comments.html
old mode 100755
new mode 100644
diff --git a/overrides/stylesheets/extra.css b/overrides/stylesheets/extra.css
index 208be832b..cb2027bf0 100644
--- a/overrides/stylesheets/extra.css
+++ b/overrides/stylesheets/extra.css
@@ -29,23 +29,29 @@
}
[data-md-color-scheme="slate"] {
- --md-primary-fg-color: #22272e;
+ --theme-dark-base: #1E1E1E;
+ --theme-dark-mantle: #1A1A1A;
+ --theme-dark-crust: #171717;
+ --hero-starfield-bg-color: var(--theme-dark-base);
+
+ --md-primary-fg-color: var(--theme-dark-base);
--md-primary-bg-color: #adbac7;
--md-default-fg-color: #adbac7;
- --md-default-bg-color: #22272e;
+ --md-default-bg-color: var(--theme-dark-base);
- --md-body-bg-color: #22272e;
- --md-header-bg-color: rgba(34, 39, 46, 0.8);
+ --md-body-bg-color: var(--theme-dark-mantle);
+ --md-header-bg-color: rgba(26, 26, 26, 0.8);
--md-code-fg-color: #adbac7;
- --md-code-bg-color: #1d2126;
+ --md-code-bg-color: var(--theme-dark-crust);
--md-accent-fg-color: #aaa;
--md-admonition-fg-color: #adbac7;
--md-footer-fg-color: #adbac7;
+ --md-footer-bg-color: var(--theme-dark-mantle);
--md-typeset-color: #adbac7;
--md-typeset-a-color: #52bbb1;
@@ -53,7 +59,7 @@
--md-typeset-btn-color: #52bbb1;
--md-typeset-btn-hover-color: #55aea6;
- --md-admonition-pythontutor-color: #30363f;
+ --md-admonition-pythontutor-color: var(--theme-dark-crust);
}
[data-md-color-scheme="slate"][data-md-color-primary="black"],
@@ -76,6 +82,36 @@
background-color: var(--md-header-bg-color);
}
+[data-md-color-scheme="slate"] .md-footer,
+[data-md-color-scheme="slate"] .md-footer__inner {
+ background-color: var(--theme-dark-mantle);
+ color: var(--md-footer-fg-color);
+}
+
+[data-md-color-scheme="slate"] .md-footer-meta {
+ background-color: var(--theme-dark-crust);
+ color: var(--md-footer-fg-color);
+}
+
+[data-md-color-scheme="slate"] .md-footer__link {
+ background-color: var(--theme-dark-crust);
+ color: var(--md-footer-fg-color);
+}
+
+[data-md-color-scheme="slate"] .md-footer__link:hover {
+ background-color: var(--theme-dark-base);
+}
+
+[data-md-color-scheme="slate"] .md-footer__title,
+[data-md-color-scheme="slate"] .md-footer__direction,
+[data-md-color-scheme="slate"] .md-footer__button,
+[data-md-color-scheme="slate"] .md-copyright,
+[data-md-color-scheme="slate"] .md-copyright a,
+[data-md-color-scheme="slate"] .md-social,
+[data-md-color-scheme="slate"] .md-social__link {
+ color: var(--md-footer-fg-color);
+}
+
/* https://github.com/squidfunk/mkdocs-material/issues/4832#issuecomment-1374891676 */
.md-nav__link[for] {
color: var(--md-default-fg-color) !important;
@@ -477,6 +513,16 @@ a:hover .text-button span {
margin-bottom: 0.5em;
}
+.translator-profile-div {
+ gap: 0.5em;
+}
+
+.translator-profile-cell {
+ flex: 0 0 auto;
+ margin: 0.5em 0;
+ min-width: 8.5em;
+}
+
.giscus-container {
width: 40em;
max-width: 100%;
@@ -559,6 +605,7 @@ a:hover .text-button span {
width: 100%;
height: 100%;
z-index: 0;
+ background-color: var(--hero-starfield-bg-color, transparent);
}
.starfield-origin {
@@ -566,4 +613,4 @@ a:hover .text-button span {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-}
\ No newline at end of file
+}
diff --git a/overrides/zensical/stylesheets/extra.css b/overrides/zensical/stylesheets/extra.css
new file mode 100644
index 000000000..d52c7432b
--- /dev/null
+++ b/overrides/zensical/stylesheets/extra.css
@@ -0,0 +1,770 @@
+/* Color Settings */
+/* https://github.com/squidfunk/mkdocs-material/blob/6b5035f5580f97532d664e3d1babf5f320e88ee9/src/assets/stylesheets/main/_colors.scss */
+/* https://squidfunk.github.io/mkdocs-material/setup/changing-the-colors/#custom-colors */
+:root>* {
+ --md-primary-fg-color: #ffffff;
+ --md-primary-bg-color: #1d1d20;
+
+ --md-default-fg-color: #1d1d20;
+ --md-default-bg-color: #ffffff;
+
+ --md-body-bg-color: #22272e;
+ --md-header-bg-color: rgba(255, 255, 255, 0.6);
+
+ --md-code-fg-color: #1d1d20;
+ --md-code-bg-color: #f5f5f5;
+
+ --md-accent-fg-color: #999;
+
+ --md-typeset-color: #1d1d20;
+ --md-typeset-a-color: #349890;
+
+ --md-typeset-btn-color: #55aea6;
+ --md-typeset-btn-hover-color: #52bbb1;
+
+ --md-admonition-icon--pythontutor: url('data:image/svg+xml;charset=utf-8,
');
+ --md-admonition-pythontutor-color: #eee;
+}
+
+[data-md-color-scheme="slate"] {
+ --theme-dark-base: #1E1E1E;
+ --theme-dark-mantle: #1A1A1A;
+ --theme-dark-crust: #171717;
+ --hero-starfield-bg-color: var(--theme-dark-base);
+
+ --md-primary-fg-color: var(--theme-dark-base);
+ --md-primary-bg-color: #adbac7;
+
+ --md-default-fg-color: #adbac7;
+ --md-default-bg-color: var(--theme-dark-base);
+
+ --md-body-bg-color: var(--theme-dark-mantle);
+ --md-header-bg-color: rgba(26, 26, 26, 0.8);
+
+ --md-code-fg-color: #adbac7;
+ --md-code-bg-color: var(--theme-dark-crust);
+
+ --md-accent-fg-color: #aaa;
+
+ --md-footer-fg-color: #adbac7;
+ --md-footer-bg-color: var(--theme-dark-mantle);
+
+ --md-typeset-color: #adbac7;
+ --md-typeset-a-color: #52bbb1;
+
+ --md-typeset-btn-color: #52bbb1;
+ --md-typeset-btn-hover-color: #55aea6;
+
+ --md-admonition-pythontutor-color: var(--theme-dark-crust);
+}
+
+[data-md-color-scheme="slate"][data-md-color-primary="black"],
+[data-md-color-scheme="slate"][data-md-color-primary="white"] {
+ --md-typeset-a-color: #52bbb1;
+}
+
+[data-md-color-scheme="slate"] .md-footer,
+[data-md-color-scheme="slate"] .md-footer__inner {
+ background-color: var(--theme-dark-mantle);
+ color: var(--md-footer-fg-color);
+}
+
+[data-md-color-scheme="slate"] .md-footer-meta {
+ background-color: var(--theme-dark-crust);
+ color: var(--md-footer-fg-color);
+}
+
+[data-md-color-scheme="slate"] .md-footer__link {
+ background-color: var(--theme-dark-crust);
+ color: var(--md-footer-fg-color);
+}
+
+[data-md-color-scheme="slate"] .md-footer__link:hover {
+ background-color: var(--theme-dark-base);
+}
+
+[data-md-color-scheme="slate"] .md-footer__title,
+[data-md-color-scheme="slate"] .md-footer__direction,
+[data-md-color-scheme="slate"] .md-footer__button,
+[data-md-color-scheme="slate"] .md-copyright,
+[data-md-color-scheme="slate"] .md-copyright a,
+[data-md-color-scheme="slate"] .md-social,
+[data-md-color-scheme="slate"] .md-social__link {
+ color: var(--md-footer-fg-color);
+}
+
+/* https://github.com/squidfunk/mkdocs-material/issues/4832#issuecomment-1374891676 */
+.md-nav__link[for] {
+ color: var(--md-default-fg-color) !important;
+}
+
+/* Figure class */
+.animation-figure {
+ border-radius: 0.3rem;
+ display: block;
+ margin: 0 auto;
+ box-shadow: var(--md-shadow-z2);
+}
+
+/* Cover image class */
+.cover-image {
+ width: 28rem;
+ height: auto;
+ border-radius: 0.3rem;
+ display: block;
+ margin: 0 auto;
+ box-shadow: var(--md-shadow-z2);
+}
+
+/* Center Markdown Tables (requires md_in_html extension) */
+.center-table {
+ text-align: center;
+}
+
+/* Reset alignment for table cells */
+.md-typeset .center-table :is(td, th):not([align]) {
+ text-align: initial;
+}
+
+/* Font size */
+.md-typeset {
+ font-size: 0.75rem;
+ line-height: 1.5;
+}
+
+.md-typeset pre {
+ font-size: 0.95em;
+}
+
+/* Markdown Header */
+/* https://github.com/squidfunk/mkdocs-material/blob/dcab57dd1cced4b77875c1aa1b53467c62709d31/src/assets/stylesheets/main/_typeset.scss */
+.md-typeset h1 {
+ font-weight: 400;
+ color: var(--md-default-fg-color);
+}
+
+.md-typeset h2 {
+ font-weight: 400;
+}
+
+.md-typeset h3 {
+ font-weight: 500;
+}
+
+.md-typeset h5 {
+ text-transform: none;
+}
+
+.md-typeset a:hover {
+ color: var(--md-typeset-a-color);
+ text-decoration: underline;
+}
+
+.md-typeset code {
+ border-radius: 0.2rem;
+}
+
+.highlight span.filename {
+ font-weight: normal;
+}
+
+/* font-family setting for Win10 */
+body {
+ --md-text-font-family: -apple-system, BlinkMacSystemFont,
+ var(--md-text-font, _), Helvetica, Arial, sans-serif;
+ --md-code-font-family: var(--md-code-font, _), SFMono-Regular, Consolas, Menlo,
+ -apple-system, BlinkMacSystemFont, var(--md-text-font, _), monospace;
+}
+
+/* max height of code block */
+/* https://github.com/squidfunk/mkdocs-material/issues/3444 */
+.md-typeset pre>code {
+ max-height: 25rem;
+}
+
+/* Keep code block scrollbar hover neutral instead of accent-colored */
+.md-typeset pre>code:hover {
+ scrollbar-color: var(--md-default-fg-color--lighter) transparent;
+}
+
+.md-typeset pre>code::-webkit-scrollbar-thumb:hover {
+ background-color: var(--md-default-fg-color--lighter);
+}
+
+/* Make the picture not glare in dark theme */
+[data-md-color-scheme="slate"] .md-typeset img,
+[data-md-color-scheme="slate"] .md-typeset svg,
+[data-md-color-scheme="slate"] .md-typeset video {
+ filter: brightness(0.85) invert(0.05);
+}
+
+/* landing page */
+.header-img-div {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 0 auto;
+ width: 100%;
+ /* Default to full width */
+}
+
+/* Admonition for python tutor */
+.md-typeset .admonition.pythontutor,
+.md-typeset details.pythontutor {
+ border-color: var(--md-default-fg-color--lightest);
+ margin-top: 0;
+ margin-bottom: 1.5625em;
+}
+
+.md-typeset .pythontutor>.admonition-title,
+.md-typeset .pythontutor>summary {
+ background-color: var(--md-code-bg-color);
+}
+
+.md-typeset .pythontutor>.admonition-title::before,
+.md-typeset .pythontutor>summary::before {
+ background-color: rgb(55, 118, 171);
+ -webkit-mask-image: var(--md-admonition-icon--pythontutor);
+ mask-image: var(--md-admonition-icon--pythontutor);
+}
+
+/* code block tabs */
+.md-typeset .tabbed-labels>label {
+ font-size: 0.61rem;
+}
+
+.md-typeset .tabbed-labels--linked>label>a {
+ padding: .78125em 1.0em .625em;
+}
+
+/* header banner */
+.md-banner {
+ background-color: var(--md-code-bg-color);
+ color: var(--md-default-fg-color);
+ font-size: 0.75rem;
+}
+
+.md-banner .banner-svg svg {
+ margin-right: 0.3rem;
+ height: 0.63rem;
+ fill: var(--md-default-fg-color);
+}
+
+.pythontutor-iframe {
+ width: 125%;
+ height: 125%;
+ max-width: 125% !important;
+ max-height: 125% !important;
+ transform: scale(0.8);
+ transform-origin: top left;
+ border: none;
+}
+
+/* landing page container */
+.home-div {
+ width: 100%;
+ height: auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-color: var(--md-default-bg-color);
+ color: var(--md-default-fg-color);
+ font-size: 0.9rem;
+ padding: 3em 2em;
+ text-align: center;
+}
+
+.section-content {
+ width: 100%;
+ height: auto;
+ max-width: 70vw;
+}
+
+/* rounded button */
+.rounded-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 10em;
+ margin: 0 0.1em;
+ padding: 0.6em 1.3em;
+ border: none;
+ background-color: var(--md-typeset-btn-color);
+ color: var(--md-primary-fg-color) !important;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.rounded-button:hover {
+ background-color: var(--md-typeset-btn-hover-color);
+}
+
+.rounded-button span {
+ margin: 0;
+ margin-bottom: 0.07em;
+ white-space: nowrap;
+}
+
+.rounded-button svg {
+ fill: var(--md-primary-fg-color);
+ width: auto;
+ height: 1.2em;
+ margin-right: 0.5em;
+}
+
+/* device image */
+.device-on-hover {
+ width: auto;
+ transition: transform 0.3s ease-in-out, filter 0.3s ease-in-out;
+}
+
+a:hover .device-on-hover {
+ filter: drop-shadow(0 0 0.2rem rgba(0, 0, 0, 0.15));
+ transform: scale(1.01);
+}
+
+/* text button */
+.reading-media {
+ display: flex;
+ justify-content: center;
+ align-items: flex-end;
+ height: 32vw;
+}
+
+.media-block {
+ height: 100%;
+ margin: 0 0.2em;
+}
+
+.text-button {
+ width: auto;
+ color: var(--md-typeset-btn-color);
+ text-decoration: none;
+ text-align: center;
+ margin: 2.7em auto;
+}
+
+.text-button span {
+ white-space: nowrap;
+}
+
+.text-button svg {
+ display: inline-block;
+ fill: var(--md-typeset-btn-color);
+ width: auto;
+ height: 0.9em;
+ background-size: cover;
+ padding-top: 0.17em;
+ margin-left: 0.15em;
+}
+
+a:hover .text-button span {
+ text-decoration: underline;
+}
+
+/* hero image */
+.hero-div {
+ height: min(84vh, 75vw);
+ width: min(112vh, 100vw);
+ margin: 0 auto;
+ margin-top: -2.4rem;
+ padding: 0;
+ position: relative;
+ font-size: min(1.8vh, 2.5vw);
+ font-weight: normal;
+}
+
+.hero-bg {
+ height: 100%;
+ width: 100%;
+ object-fit: cover;
+ position: absolute;
+}
+
+/* hover on the planets */
+.hero-div>a>img {
+ width: auto;
+ position: absolute;
+ transition: transform 0.3s ease-in-out, filter 0.3s ease-in-out;
+}
+
+.hero-div>a>span {
+ margin: 0;
+ position: absolute;
+ transform: translateX(-50%) translateY(-50%);
+ white-space: nowrap;
+ /* prevent line breaks */
+ color: white;
+}
+
+.hero-div>a:hover>img {
+ filter: brightness(1.15) saturate(1.1) drop-shadow(0 0 0.5rem rgba(255, 255, 255, 0.2));
+ transform: scale(1.03);
+}
+
+.hero-div>a:hover>span {
+ text-decoration: underline;
+ color: var(--md-typeset-btn-color);
+}
+
+.heading-div {
+ width: 100%;
+ position: absolute;
+ transform: translateX(-50%);
+ left: 50%;
+ bottom: min(2vh, 3vw);
+ pointer-events: none;
+ color: #fff;
+}
+
+/* code badge */
+.code-badge {
+ width: 100%;
+ height: auto;
+ margin: 1em auto;
+}
+
+.code-badge img {
+ height: 1.07em;
+ width: auto;
+}
+
+/* brief intro */
+.intro-container {
+ display: flex;
+ align-items: center;
+ margin: 2em auto;
+}
+
+.intro-image {
+ flex-shrink: 0;
+ flex-grow: 0;
+ width: 50%;
+ border-radius: 0.5em;
+ box-shadow: var(--md-shadow-z2);
+}
+
+.intro-text {
+ flex-grow: 1;
+ /* fill the space */
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ text-align: left;
+ align-items: flex-start;
+ width: fit-content;
+ margin: 2em;
+}
+
+.intro-text>div {
+ align-self: flex-start;
+ width: auto;
+ margin: 0 auto;
+}
+
+.endor-text {
+ width: 50%;
+}
+
+.intro-quote {
+ color: var(--md-accent-fg-color);
+ font-weight: bold;
+}
+
+/* contributors table */
+.profile-div {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ max-width: 40em;
+ margin: 1em auto;
+}
+
+.profile-cell {
+ flex: 1 1 15%;
+ margin: 1em 0;
+ text-align: center;
+}
+
+.profile-img {
+ width: 5em;
+ border-radius: 50%;
+ margin-bottom: 0.5em;
+}
+
+.translator-profile-div {
+ gap: 0.5em;
+}
+
+.translator-profile-cell {
+ flex: 0 0 auto;
+ margin: 0.5em 0;
+ min-width: 8.5em;
+}
+
+.giscus-container {
+ width: 40em;
+ max-width: 100%;
+ margin: 0 auto;
+}
+
+/* Hide navigation */
+@media screen and (max-width: 76.25em) {
+ .section-content {
+ max-width: 95vw;
+ }
+
+ .reading-media {
+ height: 33vw;
+ }
+
+ .contrib-image {
+ width: 100%;
+ }
+}
+
+/* mobile devices */
+@media screen and (max-width: 60em) {
+ .home-div {
+ font-size: 0.75rem;
+ }
+
+ .hero-div {
+ margin-top: -4rem;
+ }
+
+ .intro-container {
+ flex-direction: column;
+ }
+
+ .intro-text {
+ width: auto;
+ order: 2;
+ margin: 0 auto;
+ }
+
+ .endor-text {
+ width: auto;
+ margin: 0 auto;
+ }
+
+ .intro-image {
+ width: 100%;
+ order: 1;
+ margin-bottom: 1em;
+ }
+
+ .text-button {
+ margin: 0.7em auto;
+ }
+
+ .profile-cell {
+ flex: 1 1 30%;
+ }
+}
+
+.video-container {
+ position: relative;
+ padding-bottom: 56.25%;
+ /* 16:9 */
+ height: 0;
+}
+
+.video-container iframe {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+/* starfield */
+.starfield {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 0;
+ background-color: var(--hero-starfield-bg-color, transparent);
+}
+
+.starfield-origin {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+/* Zensical-specific adjustments merged into the main stylesheet. */
+:root>* {
+ --md-accent-fg-color: var(--md-typeset-a-color);
+ --md-admonition-pythontutor-color: var(--md-code-bg-color);
+ --hello-algo-sidebar-width: 13rem;
+}
+
+[data-md-color-scheme="slate"] {
+ --md-accent-fg-color: var(--md-typeset-a-color);
+ --md-admonition-pythontutor-color: var(--md-code-bg-color);
+ --md-body-bg-color: var(--md-default-bg-color);
+ --md-default-bg-color--light: rgb(30 30 30 / 0.8);
+}
+
+[data-md-color-scheme="slate"] .md-typeset details.pythontutor[open]> :not(summary),
+[data-md-color-scheme="slate"] .md-typeset details.pythontutor[open]> :not(summary) :is(p, li, strong, em, sub, sup, code, a) {
+ background-color: #f5f5f5;
+ color: #1d1d20;
+}
+
+body {
+ background-color: var(--md-default-bg-color);
+}
+
+html:has(body[data-md-color-scheme="slate"]) {
+ background-color: #1e1e1e;
+}
+
+html:has(body[data-md-color-scheme="default"]) {
+ background-color: #ffffff;
+}
+
+.home-div[data-md-color-scheme="default"],
+.home-div[data-md-color-scheme="default"] h1,
+.home-div[data-md-color-scheme="default"] h2,
+.home-div[data-md-color-scheme="default"] h3,
+.home-div[data-md-color-scheme="default"] h4,
+.home-div[data-md-color-scheme="default"] h5,
+.home-div[data-md-color-scheme="default"] h6 {
+ color: var(--md-default-fg-color);
+}
+
+.home-div[data-md-color-scheme="slate"],
+.home-div[data-md-color-scheme="slate"] h1,
+.home-div[data-md-color-scheme="slate"] h2,
+.home-div[data-md-color-scheme="slate"] h3,
+.home-div[data-md-color-scheme="slate"] h4,
+.home-div[data-md-color-scheme="slate"] h5,
+.home-div[data-md-color-scheme="slate"] h6 {
+ color: var(--md-default-fg-color);
+}
+
+.home-div .intro-quote {
+ color: var(--md-default-fg-color--light) !important;
+}
+
+.reading-media+p {
+ margin-top: 1em !important;
+}
+
+.md-typeset .admonition-title:before,
+.md-typeset summary:before,
+.md-typeset summary:after {
+ top: 50%;
+}
+
+.md-typeset .admonition-title:before,
+.md-typeset summary:before {
+ transform: translateY(-50%);
+}
+
+.md-typeset summary:after {
+ transform: translateY(-50%) rotate(0deg);
+}
+
+.md-typeset details[open]>summary:after {
+ transform: translateY(-50%) rotate(90deg);
+}
+
+.md-nav__link[for] {
+ color: inherit !important;
+}
+
+.md-nav__link[for].md-nav__link--active {
+ color: var(--md-accent-fg-color) !important;
+}
+
+@media screen and (min-width: 76.25em) {
+ .md-grid {
+ max-width: calc(61rem + 2 * (var(--hello-algo-sidebar-width) - 12.1rem));
+ }
+
+ .md-sidebar--primary,
+ .md-sidebar--secondary {
+ width: var(--hello-algo-sidebar-width);
+ }
+
+ [dir="ltr"] .md-sidebar__inner {
+ padding-right: calc(100% - (var(--hello-algo-sidebar-width) - 0.6rem));
+ }
+
+ [dir="rtl"] .md-sidebar__inner {
+ padding-left: calc(100% - (var(--hello-algo-sidebar-width) - 0.6rem));
+ }
+}
+
+.md-sidebar--primary .md-sidebar__scrollwrap {
+ scrollbar-color: var(--md-default-fg-color--lighter) transparent;
+}
+
+.md-sidebar--primary .md-sidebar__scrollwrap::-webkit-scrollbar-thumb,
+.md-sidebar--primary .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover {
+ background-color: var(--md-default-fg-color--lighter);
+}
+
+.md-footer,
+.md-footer__inner,
+.md-footer-meta,
+.md-footer__link,
+.md-footer__link:hover {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-footer {
+ border-top: 0.05rem solid var(--md-default-fg-color--lightest);
+}
+
+[data-md-color-scheme="slate"] .md-footer,
+[data-md-color-scheme="slate"] .md-footer__inner,
+[data-md-color-scheme="slate"] .md-footer-meta,
+[data-md-color-scheme="slate"] .md-footer__link,
+[data-md-color-scheme="slate"] .md-footer__link:hover {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-banner {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-typeset .admonition.pythontutor,
+.md-typeset details.pythontutor,
+.md-typeset .pythontutor>.admonition-title,
+.md-typeset .pythontutor>summary {
+ background-color: var(--md-code-bg-color);
+}
+
+.md-typeset .pythontutor>.admonition-title::before,
+.md-typeset .pythontutor>summary::before,
+.md-typeset .pythontutor>summary::after {
+ top: 50%;
+}
+
+.md-typeset .pythontutor>.admonition-title::before,
+.md-typeset .pythontutor>summary::before {
+ transform: translateY(-50%);
+}
+
+.md-typeset .pythontutor>summary::after {
+ transform: translateY(-50%) rotate(0deg);
+}
+
+.md-typeset details[open].pythontutor>summary::after {
+ transform: translateY(-50%) rotate(90deg);
+}
+
+.md-typeset a:not(.md-button) {
+ text-decoration: none;
+}
+
+.md-typeset a:not(.md-button):hover,
+.md-typeset a:not(.md-button):focus-visible {
+ text-decoration: underline;
+}
\ No newline at end of file
diff --git a/overrides/zensical/zensical.toml b/overrides/zensical/zensical.toml
new file mode 100644
index 000000000..d4e36734f
--- /dev/null
+++ b/overrides/zensical/zensical.toml
@@ -0,0 +1,20 @@
+[project]
+extra_css = [
+ "stylesheets/extra.css",
+]
+
+[project.theme]
+features = [
+ "content.action.edit",
+ "content.code.annotate",
+ "content.code.copy",
+ "content.tabs.link",
+ "content.tooltips",
+ "navigation.indexes",
+ "navigation.top",
+ "navigation.tracking",
+ "search.highlight",
+ "search.share",
+ "search.suggest",
+ "toc.follow",
+]