diff --git a/mkdocs.yml b/mkdocs.yml
index f57e690..4d5bc26 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -7,17 +7,26 @@ repo_name: httpdss/struct
theme:
name: material
palette:
+ # Palette toggle for dark mode (default)
+ - media: "(prefers-color-scheme: dark)"
+ scheme: slate
+ primary: teal
+ accent: indigo
+ toggle:
+ icon: material/brightness-4
+ name: Switch to light mode
# Palette toggle for light mode
- - scheme: default
- primary: blue
- accent: blue
+ - media: "(prefers-color-scheme: light)"
+ scheme: default
+ primary: teal
+ accent: indigo
toggle:
icon: material/brightness-7
name: Switch to dark mode
- # Palette toggle for dark mode
+ # Default dark mode fallback
- scheme: slate
- primary: blue
- accent: blue
+ primary: teal
+ accent: indigo
toggle:
icon: material/brightness-4
name: Switch to light mode
@@ -30,6 +39,7 @@ theme:
- search.share
- content.code.copy
- content.code.annotate
+ custom_dir: overrides
docs_dir: docs
site_dir: site/docs
@@ -81,3 +91,6 @@ plugins:
- search
- git-revision-date-localized:
enable_creation_date: true
+
+extra_css:
+ - stylesheets/extra.css
diff --git a/overrides/main.html b/overrides/main.html
new file mode 100644
index 0000000..62203c3
--- /dev/null
+++ b/overrides/main.html
@@ -0,0 +1,23 @@
+{% extends "base.html" %}
+
+{% block extrahead %}
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+{{ super() }}
+{% endblock %}
diff --git a/overrides/stylesheets/extra.css b/overrides/stylesheets/extra.css
new file mode 100644
index 0000000..21b617b
--- /dev/null
+++ b/overrides/stylesheets/extra.css
@@ -0,0 +1,287 @@
+/* STRUCT MkDocs Custom Theme - Matching main site styling */
+@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Fira+Code:wght@300;400;500&display=swap');
+
+/* CSS Custom Properties - Matching main site */
+:root {
+ /* Colors from main site */
+ --md-primary-fg-color: #00ff88;
+ --md-primary-fg-color--light: #00ff88;
+ --md-primary-fg-color--dark: #00cc6a;
+ --md-accent-fg-color: #0066ff;
+ --md-accent-fg-color--transparent: rgba(0, 102, 255, 0.1);
+
+ /* Dark theme colors */
+ --md-default-bg-color: #0a0a0a;
+ --md-default-fg-color: #ffffff;
+ --md-default-fg-color--light: #b0b0b0;
+ --md-default-fg-color--lighter: #888888;
+ --md-default-fg-color--lightest: #666666;
+
+ /* Code colors */
+ --md-code-bg-color: #1a1a1a;
+ --md-code-fg-color: #00ff88;
+
+ /* Typography */
+ --md-text-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI',
+ sans-serif;
+ --md-code-font: 'Fira Code', 'SF Mono', Monaco, 'Cascadia Code', monospace;
+}
+
+/* Base styling overrides */
+[data-md-color-scheme='slate'] {
+ --md-hue: 232;
+ --md-default-bg-color: #0a0a0a;
+ --md-default-fg-color: #ffffff;
+ --md-default-fg-color--light: #b0b0b0;
+ --md-default-fg-color--lighter: #888888;
+ --md-default-fg-color--lightest: #666666;
+ --md-code-bg-color: #1a1a1a;
+ --md-code-fg-color: #00ff88;
+}
+
+/* Body and container styling */
+body {
+ font-family: var(--md-text-font);
+ background-color: var(--md-default-bg-color);
+ color: var(--md-default-fg-color);
+}
+
+.md-container {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-main {
+ background-color: var(--md-default-bg-color);
+}
+
+/* Header styling */
+.md-header {
+ background-color: #1a1a1a;
+ color: var(--md-default-fg-color);
+ border-bottom: 1px solid #333333;
+}
+
+.md-header__title {
+ color: var(--md-primary-fg-color);
+ font-weight: 600;
+}
+
+/* Navigation styling */
+.md-nav {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-nav__title {
+ color: var(--md-default-fg-color);
+ font-weight: 600;
+}
+
+.md-nav__item .md-nav__link {
+ color: var(--md-default-fg-color--light);
+}
+
+.md-nav__item .md-nav__link:hover {
+ color: var(--md-primary-fg-color);
+}
+
+.md-nav__item .md-nav__link--active {
+ color: var(--md-primary-fg-color);
+}
+
+/* Content area styling */
+.md-content {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-typeset {
+ color: var(--md-default-fg-color);
+}
+
+/* Headings */
+.md-typeset h1,
+.md-typeset h2,
+.md-typeset h3,
+.md-typeset h4,
+.md-typeset h5,
+.md-typeset h6 {
+ color: var(--md-default-fg-color);
+ font-weight: 600;
+}
+
+.md-typeset h1 {
+ color: var(--md-primary-fg-color);
+}
+
+/* Paragraphs and text */
+.md-typeset p {
+ color: var(--md-default-fg-color--light);
+}
+
+/* Links */
+.md-typeset a {
+ color: var(--md-accent-fg-color);
+}
+
+.md-typeset a:hover {
+ color: var(--md-primary-fg-color);
+}
+
+/* Code styling */
+.md-typeset code {
+ background-color: var(--md-code-bg-color);
+ color: var(--md-code-fg-color);
+ border: 1px solid #333333;
+ border-radius: 4px;
+ padding: 2px 8px;
+ font-family: var(--md-code-font);
+}
+
+.md-typeset pre {
+ background-color: var(--md-code-bg-color);
+ border: 1px solid #333333;
+ border-radius: 8px;
+}
+
+.md-typeset pre code {
+ background: none;
+ border: none;
+ color: var(--md-default-fg-color);
+}
+
+/* Search styling */
+.md-search__form {
+ background-color: #1a1a1a;
+ border: 1px solid #333333;
+}
+
+.md-search__input {
+ background-color: transparent;
+ color: var(--md-default-fg-color);
+}
+
+.md-search__input::placeholder {
+ color: var(--md-default-fg-color--lighter);
+}
+
+/* Footer */
+.md-footer {
+ background-color: #1a1a1a;
+ border-top: 1px solid #333333;
+}
+
+.md-footer__meta {
+ background-color: #0a0a0a;
+}
+
+/* Sidebar */
+.md-sidebar {
+ background-color: var(--md-default-bg-color);
+}
+
+.md-sidebar--secondary {
+ background-color: var(--md-default-bg-color);
+}
+
+/* Tables */
+.md-typeset table:not([class]) {
+ border: 1px solid #333333;
+}
+
+.md-typeset table:not([class]) th {
+ background-color: #1a1a1a;
+ color: var(--md-default-fg-color);
+ border-bottom: 1px solid #333333;
+}
+
+.md-typeset table:not([class]) td {
+ border-top: 1px solid #333333;
+ color: var(--md-default-fg-color--light);
+}
+
+/* Admonitions */
+.md-typeset .admonition {
+ border-left: 4px solid var(--md-primary-fg-color);
+ background-color: #1a1a1a;
+ border-radius: 0 8px 8px 0;
+}
+
+.md-typeset .admonition-title {
+ color: var(--md-default-fg-color);
+ font-weight: 600;
+}
+
+/* Buttons and form elements */
+.md-button {
+ background-color: var(--md-primary-fg-color);
+ color: #0a0a0a;
+ border-radius: 8px;
+ font-weight: 500;
+}
+
+.md-button:hover {
+ background-color: var(--md-primary-fg-color--dark);
+}
+
+/* Tabs */
+.md-tabs {
+ background-color: #1a1a1a;
+ border-bottom: 1px solid #333333;
+}
+
+.md-tabs__item {
+ color: var(--md-default-fg-color--light);
+}
+
+.md-tabs__link:hover {
+ color: var(--md-primary-fg-color);
+}
+
+.md-tabs__link--active {
+ color: var(--md-primary-fg-color);
+}
+
+/* Custom scrollbar */
+::-webkit-scrollbar {
+ width: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: #1a1a1a;
+}
+
+::-webkit-scrollbar-thumb {
+ background: #333333;
+ border-radius: 4px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: #888888;
+}
+
+/* Responsive adjustments */
+@media screen and (max-width: 76.1875em) {
+ .md-nav--primary .md-nav__title {
+ background-color: var(--md-primary-fg-color);
+ color: #0a0a0a;
+ }
+}
+
+/* Additional Material theme overrides for better integration */
+.md-typeset .highlight {
+ background-color: var(--md-code-bg-color);
+ border: 1px solid #333333;
+ border-radius: 8px;
+}
+
+.md-typeset .highlight pre {
+ background: none;
+ border: none;
+}
+
+/* Make sure dark mode is properly applied */
+@media (prefers-color-scheme: dark) {
+ :root {
+ --md-default-bg-color: #0a0a0a;
+ --md-default-fg-color: #ffffff;
+ }
+}