From 372e957e62aff27612fcc36bdeea13accdfb5437 Mon Sep 17 00:00:00 2001 From: quasar Date: Tue, 13 Oct 2026 17:47:41 +0000 Subject: [PATCH] Add GitHub Pages documentation site (issue 12) - MkDocs + Material theme (mkdocs.yml) with a teal brand palette, mirroring the QuasarApp/Heart documentation setup but using a different visual color scheme - docs/overrides/main.css: teal palette overrides for the light and slate schemes - res/doxygen-material.css: Material restyle of the Doxygen HTML output in the same teal palette - doxygen.conf.in: Doxygen template (API output under docs/api/, call/caller graphs, C-optimized output) - .github/workflows/deploy-docs.yml: build Doxygen + MkDocs on push to main and deploy to the gh-pages branch - .gitignore: ignore the generated documentation artifacts (doxygen.conf, docs/api/, docs/index.md, docs/LICENSE, site/) Note: after the first deploy, GitHub Pages must be configured to serve the gh-pages branch (repository settings, maintainer action). Fixes #12 --- .github/workflows/deploy-docs.yml | 74 +++++++ .gitignore | 8 + docs/overrides/main.css | 43 ++++ doxygen.conf.in | 104 +++++++++ mkdocs.yml | 84 ++++++++ res/doxygen-material.css | 338 ++++++++++++++++++++++++++++++ 6 files changed, 651 insertions(+) create mode 100644 .github/workflows/deploy-docs.yml create mode 100644 docs/overrides/main.css create mode 100644 doxygen.conf.in create mode 100644 mkdocs.yml create mode 100644 res/doxygen-material.css diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 0000000..267cf6b --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,74 @@ +name: Deploy Documentation (GitHub Pages) + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: write + +jobs: + build-and-deploy: + name: Build the documentation site and deploy to GitHub Pages + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # The full history is required to compute the + # 1.0.. project version. + fetch-depth: 0 + + - name: Install Doxygen + uses: ssciwr/doxygen-install@v2.0.3 + with: + # The latest stable release the documentation was generated and + # validated with. + version: 1.18.0 + + - name: Install Graphviz + uses: ts-graphviz/setup-graphviz@v2.0.2 + + - name: Generate the Doxygen configuration file + run: | + PROJECT_VERSION="1.0.$(git rev-list --count HEAD).$(git rev-parse --short HEAD)" + # The version placeholder is the only build-time substitution; + # the HTML output goes to docs/api/ (OUTPUT_DIRECTORY + + # HTML_OUTPUT, see doxygen.conf.in), so the MkDocs build serves + # it as the /api/ section of the site. + sed -e "s|@OPENSIMPLEX2_VERSION@|${PROJECT_VERSION}|" \ + doxygen.conf.in > doxygen.conf + grep -E '^(PROJECT_NAME|PROJECT_NUMBER)' doxygen.conf + + - name: Generate the Doxygen HTML documentation + run: doxygen doxygen.conf + + - name: Copy the README and the LICENSE as the site home page assets + run: | + # docs/index.md is generated from the root README.md at build + # time (it is gitignored), so the README stays the single + # source of truth for the site home page. The LICENSE file is + # copied too, because the README links it relatively and + # `mkdocs build --strict` fails on unresolved relative links. + mkdir -p docs + cp README.md docs/index.md + cp LICENSE docs/ + + - name: Install MkDocs and the Material theme + run: | + python -m pip install --upgrade pip + pip install mkdocs==1.6.1 mkdocs-material==9.7.7 + + - name: Build the documentation site + run: | + mkdocs build --strict + ls -la site site/api | head -40 + + - name: Deploy to GitHub Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: site + clean: true diff --git a/.gitignore b/.gitignore index c454441..acbd185 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,11 @@ cmake_install.cmake # Runtime test deployment dir (created by the QuasarApp CMake test targets) Testing + +# Documentation site build artifacts +# (generated by .github/workflows/deploy-docs.yml, not committed) +doxygen.conf +docs/index.md +docs/LICENSE +docs/api/ +site/ diff --git a/docs/overrides/main.css b/docs/overrides/main.css new file mode 100644 index 0000000..c31ed6e --- /dev/null +++ b/docs/overrides/main.css @@ -0,0 +1,43 @@ +/* + * main.css + * + * Custom stylesheet for the MkDocs Material site, attached through the + * top-level extra_css option (see mkdocs.yml) and therefore loaded after + * the theme's main.css and palette.css, so every rule in this file wins + * the cascade. + * + * Material for MkDocs only ships prebuilt palette rules for the named + * Material colors, so the teal brand palette (intentionally different + * from the upstream documentation theme) is applied here by overriding + * the theme's CSS custom properties per color scheme: + * + * primary #0e6b64 (deep teal: top bar, active nav, tabs) + * primary dark #0a4f4a (pressed / dark variant of the primary bar) + * primary light #17857c (hover / light variant of the primary bar) + * accent #0d7d70 (light-scheme links, ~5.0:1 contrast on white) + * accent light #6fd0c2 (dark-scheme links, contrast on the slate bg) + */ + +/* primary: deep teal (both schemes) */ +[data-md-color-scheme="default"], +[data-md-color-scheme="slate"] { + --md-primary-fg-color: #0e6b64; + --md-primary-fg-color--light: #17857c; + --md-primary-fg-color--dark: #0a4f4a; +} + +/* accent: teal on the light scheme (also colors the in-text links, since + Material 9 derives --md-typeset-a-color from the primary color by + default) */ +[data-md-color-scheme="default"] { + --md-accent-fg-color: #0d7d70; + --md-accent-fg-color--transparent: #0d7d701a; + --md-typeset-a-color: #0d7d70; +} + +/* accent: light teal on the dark (slate) scheme */ +[data-md-color-scheme="slate"] { + --md-accent-fg-color: #6fd0c2; + --md-accent-fg-color--transparent: #6fd0c21a; + --md-typeset-a-color: #6fd0c2; +} diff --git a/doxygen.conf.in b/doxygen.conf.in new file mode 100644 index 0000000..b722336 --- /dev/null +++ b/doxygen.conf.in @@ -0,0 +1,104 @@ +# +# doxygen.conf.in +# +# Doxygen configuration template for the OpenSimplex2 documentation site. +# +# The "Deploy Documentation (GitHub Pages)" workflow substitutes the +# @OPENSIMPLEX2_VERSION@ placeholder with "1.0.." +# and runs `doxygen doxygen.conf` from the repository root +# (see .github/workflows/deploy-docs.yml). The HTML output is written to +# docs/api/ (OUTPUT_DIRECTORY + HTML_OUTPUT) and served as the /api/ +# section of the MkDocs site (see mkdocs.yml). +# +# res/doxygen-material.css is copied into the output directory by Doxygen +# (HTML_EXTRA_STYLESHEET) and restyles the generated pages with the site's +# teal palette. + +# ------------------------------------------------------------------------ +# Project related configuration options +# ------------------------------------------------------------------------ + +DOXYFILE_ENCODING = UTF-8 + +PROJECT_NAME = OpenSimplex2 + +# Substituted at build time, see the file header. +PROJECT_NUMBER = @OPENSIMPLEX2_VERSION@ + +PROJECT_BRIEF = "The most fast implementation of the OpenSimplex noise (2D, 3D and 4D) in C" + +OUTPUT_DIRECTORY = docs + +CREATE_SUBDIRS = NO + +USE_MDFILES = NO + +INPUT = OpenSimplex2F.h \ + OpenSimplex2F.c + +FILE_PATTERNS = *.h \ + *.c + +RECURSIVE = NO + +OUTPUT_LANGUAGE = English + +# ------------------------------------------------------------------------ +# Build related configuration options +# ------------------------------------------------------------------------ + +EXTRACT_ALL = YES + +EXTRACT_STATIC = NO + +EXTRACT_PACKAGE = NO + +OPTIMIZE_OUTPUT_FOR_C = YES + +TYPEDEF_HIDES_STRUCT = YES + +BRIEF_MEMBER_DESC = YES + +QTLIKE_AUTOBRIEF = YES + +JAVADOC_AUTOBRIEF = YES + +QUIET = NO + +WARN_IF_UNDOCUMENTED = YES + +WARN_AS_ERROR = NO + +# ------------------------------------------------------------------------ +# Output related configuration options +# ------------------------------------------------------------------------ + +GENERATE_HTML = YES + +# The generated pages are written to docs/api/ so that the MkDocs build +# serves them as the /api/ section of the site. +HTML_OUTPUT = api + +GENERATE_TREEVIEW = YES + +GENERATE_HTMLHELP = NO + +GENERATE_LATEX = NO + +GENERATE_XML = NO + +# Copied into the output directory and loaded after the generated +# doxygen.css, so it wins the cascade (see the file itself for details). +HTML_EXTRA_STYLESHEET = res/doxygen-material.css + +# ------------------------------------------------------------------------ +# Dot related configuration options +# ------------------------------------------------------------------------ + +HAVE_DOT = YES + +CALL_GRAPH = YES + +CALLER_GRAPH = YES + +MAX_DOT_GRAPH_DEPTH = 0 diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..92b4822 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,84 @@ +# OpenSimplex2 documentation site (GitHub Pages) +# +# Built with MkDocs + the Material theme. Before `mkdocs build` runs, +# the "Deploy Documentation (GitHub Pages)" workflow copies the root +# README.md to docs/index.md (the site home page) and generates the +# Doxygen HTML output into docs/api/, so the API section of the site +# is served from /api/. + +site_name: OpenSimplex2 +site_description: The most fast implementation of the OpenSimplex noise (2D, 3D and 4D) in C +site_url: https://quasarapp.github.io/OpenSimplex2/ + +repo_name: QuasarApp/OpenSimplex2 +repo_url: https://github.com/QuasarApp/OpenSimplex2 +edit_uri: https://github.com/QuasarApp/OpenSimplex2/edit/main/ + +docs_dir: docs +site_dir: site + +theme: + name: material + palette: + - scheme: default + # Teal brand palette (intentionally different from the upstream + # documentation theme). These entries set the data-md-color-* page + # attributes (scheme switching / persistence), but Material ships + # no prebuilt rules for custom hex values, so the actual CSS + # variable overrides live in docs/overrides/main.css (attached via + # extra_css). Deep teal (#0e6b64) top bar, teal (#0d7d70) links. + primary: "#0e6b64" + accent: "#0d7d70" + toggle: + icon: material/brightness-4 + name: Switch to dark mode + - scheme: slate + # Same teal top bar on the slate neutrals, light teal (#6fd0c2) + # links for contrast on the dark background. + primary: "#0e6b64" + accent: "#6fd0c2" + toggle: + icon: material/brightness-7 + name: Switch to light mode + font: + text: Roboto + code: Roboto Mono + features: + - content.code.copy + - navigation.footer + - navigation.indexes + - navigation.sections + - navigation.top + - navigation.tracking + - search.highlight + - search.suggest + - toc + +# Material for MkDocs only ships prebuilt palette rules for the named +# Material colors, so the teal palette is applied through this extra +# stylesheet (loaded after the theme CSS, see the file header in +# docs/overrides/main.css for the color choices). +extra_css: + - overrides/main.css + +markdown_extensions: + - admonition + - attr_list + - tables + - toc: + permalink: true + - pymdownx.details + - pymdownx.highlight + - pymdownx.inlinehilite + - pymdownx.superfences + - pymdownx.tasklist: + custom_checkbox: true + +nav: + # index.md is copied from the root README.md by the documentation + # workflow before the MkDocs build, so the README stays the single + # source of truth and the generated copy is not committed. + - Home: index.md + # api/index.html is the static Doxygen index generated into docs/api/ + # by the documentation workflow before the MkDocs build. + - API: api/index.html diff --git a/res/doxygen-material.css b/res/doxygen-material.css new file mode 100644 index 0000000..fc4c7a6 --- /dev/null +++ b/res/doxygen-material.css @@ -0,0 +1,338 @@ +/* + * doxygen-material.css + * + * Material Design restyling for the Doxygen HTML output. It is attached + * through the HTML_EXTRA_STYLESHEET tag and therefore loaded after the + * generated doxygen.css, so every rule in this file wins the cascade. + * + * Doxygen 1.18+ drives its look with CSS custom properties, which makes the + * restyle a pure palette/font re-mapping: the teal brand palette and the + * Roboto font stack of the MkDocs site (see mkdocs.yml) are applied to the + * light scheme, and the same brand colors on the site's "slate" neutrals + * are applied to the dark scheme (Doxygen follows the system color scheme + * automatically). + * + * Palette reference (teal brand palette, distinct from the upstream + * documentation theme): + * primary #0e6b64 (deep teal: bars, links, labels, icons) + * primary dark #0a4f4a (visited links, table headers, dark header bg) + * primary light #17857c (center glow, dark-scheme emphasis) + * accent #17978a (light-scheme accent / external links) + * accent glow #4fb3a5 (decorative glow) + * accent light #6fd0c2 (dark-scheme accent / links) + * soft tints #f0f8f6 #d9ece8 #b7dcd4 #92c6bc (50/100/200/300 tints) + */ + +/* ------------------------------------------------------------------ */ +/* Light scheme */ +/* ------------------------------------------------------------------ */ +html { + /* page base */ + --page-background-color: #ffffff; + --page-foreground-color: rgba(0, 0, 0, 0.87); + --page-link-color: #0e6b64; + --page-visited-link-color: #0a4f4a; + --page-external-link-color: #17978a; + + /* index */ + --index-odd-item-bg-color: #f0f8f6; + --index-even-item-bg-color: #ffffff; + --index-header-color: #0a4f4a; + --index-separator-color: #b7dcd4; + + /* header (top app bar) */ + --header-background-color: #ffffff; + --header-separator-color: #d9ece8; + --group-header-separator-color: #b7dcd4; + --group-header-color: #0e6b64; + --footer-foreground-color: #0e6b64; + --citation-label-color: #0e6b64; + --glow-color: #92c6bc; + --title-background-color: #ffffff; + --title-separator-color: #d9ece8; + + --blockquote-background-color: #f0f8f6; + --blockquote-border-color: #b7dcd4; + + --scrollbar-thumb-color: #92c6bc; + --scrollbar-background-color: #f0f8f6; + + /* icons */ + --icon-background-color: #0e6b64; + --icon-foreground-color: #ffffff; + --icon-folder-open-fill-color: #b7dcd4; + --icon-folder-fill-color: #d9ece8; + --icon-folder-border-color: #0e6b64; + --icon-doc-fill-color: #d9ece8; + --icon-doc-border-color: #0e6b64; + + /* brief member declaration list */ + --memdecl-background-color: #f0f8f6; + --memdecl-foreground-color: rgba(0, 0, 0, 0.7); + --memdecl-template-color: #0e6b64; + --memdecl-border-color: #d9ece8; + + /* detailed member list */ + --memdef-border-color: #b7dcd4; + --memdef-title-background-color: #d9ece8; + --memdef-proto-background-color: #f0f8f6; + --memdef-proto-text-color: #0a4f4a; + --memdef-param-name-color: #4f736d; + --memdef-template-color: #0e6b64; + + /* tables */ + --table-cell-border-color: #92c6bc; + --table-header-background-color: #0e6b64; + --table-header-foreground-color: #ffffff; + + /* labels */ + --label-background-color: #0e6b64; + --label-left-top-border-color: #0a4f4a; + --label-right-bottom-border-color: #92c6bc; + --label-foreground-color: #ffffff; + + /* navigation bar / tree / menu */ + --nav-background-color: #f0f8f6; + --nav-foreground-color: #0e6b64; + --nav-border-color: #d9ece8; + --nav-breadcrumb-separator-color: #b7dcd4; + --nav-breadcrumb-active-bg: #d9ece8; + --nav-breadcrumb-color: #0e6b64; + --nav-splitbar-bg-color: #d9ece8; + --nav-splitbar-handle-color: #92c6bc; + --nav-text-normal-color: #0a4f4a; + --nav-menu-button-color: #0e6b64; + --nav-menu-background-color: #ffffff; + --nav-menu-foreground-color: rgba(0, 0, 0, 0.7); + --nav-menu-active-bg: #d9ece8; + --nav-menu-active-color: #0e6b64; + --nav-arrow-color: #b7dcd4; + --nav-arrow-selected-color: #92c6bc; + + /* sync icon */ + --sync-icon-border-color: #d9ece8; + --sync-icon-background-color: #f0f8f6; + --sync-icon-selected-background-color: #d9ece8; + --sync-icon-color: #b7dcd4; + --sync-icon-selected-color: #0e6b64; + + /* table of contents */ + --toc-background-color: #f0f8f6; + --toc-border-color: #d9ece8; + --toc-header-color: #0e6b64; + + /* search field */ + --search-foreground-color: #909090; + --search-active-color: rgba(0, 0, 0, 0.87); + --search-box-border-color: #b7dcd4; + --search-filter-highlight-bg-color: #0e6b64; + --search-results-foreground-color: #0e6b64; + + /* code fragments */ + --fragment-foreground-color: rgba(0, 0, 0, 0.87); + --fragment-background-color: #f0f8f6; + --fragment-border-color: #b7dcd4; + --fragment-lineno-background-color: #e6f4f1; + --fragment-lineno-foreground-color: rgba(0, 0, 0, 0.54); + --fragment-lineno-link-fg-color: #0e6b64; + --fragment-lineno-link-bg-color: #d9ece8; + --fragment-lineno-link-hover-fg-color: #0e6b64; + --fragment-lineno-link-hover-bg-color: #b7dcd4; + --fragment-copy-ok-color: #2e7d32; + + /* tooltips */ + --tooltip-foreground-color: rgba(0, 0, 0, 0.87); + --tooltip-background-color: rgba(255, 255, 255, 0.95); + --tooltip-arrow-background-color: #ffffff; + --tooltip-border-color: rgba(209, 158, 138, 0.7); + --tooltip-doc-color: #616161; + --tooltip-declaration-color: #2e7d32; + --tooltip-link-color: #0e6b64; + + /* fonts (same stack as the MkDocs site) */ + --font-family-normal: Roboto, system-ui, -apple-system, 'Segoe UI', Ubuntu, 'Noto Sans', sans-serif; + --font-family-monospace: 'Roboto Mono', 'JetBrains Mono', Consolas, Monaco, monospace; + --font-family-nav: Roboto, system-ui, sans-serif; + --font-family-title: Roboto, system-ui, sans-serif; + --font-family-toc: Roboto, system-ui, sans-serif; + --font-family-search: Roboto, system-ui, sans-serif; + --font-family-tooltip: Roboto, sans-serif; + +/* ------------------------------------------------------------------ */ +/* Dark scheme (the "slate" palette of the MkDocs site) */ +/* ------------------------------------------------------------------ */ +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + /* page base */ + --page-background-color: #1e2129; + --page-foreground-color: rgba(255, 255, 255, 0.87); + --page-link-color: #6fd0c2; + --page-visited-link-color: #b8e0d8; + --page-external-link-color: #92c6bc; + + /* index */ + --index-odd-item-bg-color: #262a35; + --index-even-item-bg-color: #1e2129; + --index-header-color: #b8e0d8; + --index-separator-color: #3a4150; + + /* header (top app bar) */ + --header-background-color: #1a1d24; + --header-separator-color: #2e3442; + --group-header-separator-color: #3a4150; + --group-header-color: #6fd0c2; + --footer-foreground-color: #6fd0c2; + --citation-label-color: #6fd0c2; + --glow-color: #4fb3a5; + --title-background-color: #1e2129; + --title-separator-color: #2e3442; + + --blockquote-background-color: #262a35; + --blockquote-border-color: #3a4150; + + --scrollbar-thumb-color: #4c5468; + --scrollbar-background-color: #1e2129; + + /* icons */ + --icon-background-color: #0e6b64; + --icon-foreground-color: #ffffff; + --icon-folder-open-fill-color: #4c5468; + --icon-folder-fill-color: #2e3442; + --icon-folder-border-color: #6fd0c2; + --icon-doc-fill-color: #2e3442; + --icon-doc-border-color: #6fd0c2; + + /* brief member declaration list */ + --memdecl-background-color: #262a35; + --memdecl-foreground-color: rgba(255, 255, 255, 0.7); + --memdecl-template-color: #6fd0c2; + --memdecl-border-color: #2e3442; + + /* detailed member list */ + --memdef-border-color: #3a4150; + --memdef-title-background-color: #262a35; + --memdef-proto-background-color: #1a1d24; + --memdef-proto-text-color: #b8e0d8; + --memdef-param-name-color: #a7e3d9; + --memdef-template-color: #6fd0c2; + + /* tables */ + --table-cell-border-color: #4c5468; + --table-header-background-color: #0a4f4a; + --table-header-foreground-color: #ffffff; + + /* labels */ + --label-background-color: #0e6b64; + --label-left-top-border-color: #0a4f4a; + --label-right-bottom-border-color: #92c6bc; + --label-foreground-color: #ffffff; + + /* navigation bar / tree / menu */ + --nav-background-color: #1a1d24; + --nav-foreground-color: #6fd0c2; + --nav-border-color: #2e3442; + --nav-breadcrumb-separator-color: #3a4150; + --nav-breadcrumb-active-bg: #262a35; + --nav-breadcrumb-color: #6fd0c2; + --nav-splitbar-bg-color: #262a35; + --nav-splitbar-handle-color: #4c5468; + --nav-text-normal-color: #b8e0d8; + --nav-menu-button-color: #6fd0c2; + --nav-menu-background-color: #1e2129; + --nav-menu-foreground-color: rgba(255, 255, 255, 0.7); + --nav-menu-active-bg: #262a35; + --nav-menu-active-color: #6fd0c2; + --nav-arrow-color: #3a4150; + --nav-arrow-selected-color: #6fd0c2; + + /* sync icon */ + --sync-icon-border-color: #2e3442; + --sync-icon-background-color: #1a1d24; + --sync-icon-selected-background-color: #262a35; + --sync-icon-color: #3a4150; + --sync-icon-selected-color: #6fd0c2; + + /* table of contents */ + --toc-background-color: #1a1d24; + --toc-border-color: #2e3442; + --toc-header-color: #6fd0c2; + + /* search field */ + --search-foreground-color: #9aa3b5; + --search-active-color: rgba(255, 255, 255, 0.87); + --search-box-border-color: #3a4150; + --search-filter-background-color: rgba(30, 33, 41, 0.85); + --search-filter-foreground-color: rgba(255, 255, 255, 0.87); + --search-filter-border-color: rgba(76, 84, 104, 0.6); + --search-filter-highlight-bg-color: #0e6b64; + --search-results-background-color: rgba(30, 33, 41, 0.95); + --search-results-foreground-color: #6fd0c2; + --search-results-border-color: rgba(76, 84, 104, 0.6); + --search-close-icon-bg-color: #5c657a; + + /* code fragments */ + --fragment-foreground-color: rgba(255, 255, 255, 0.87); + --fragment-background-color: #1a1d24; + --fragment-border-color: #3a4150; + --fragment-lineno-background-color: #262a35; + --fragment-lineno-foreground-color: rgba(255, 255, 255, 0.54); + --fragment-lineno-link-fg-color: #6fd0c2; + --fragment-lineno-link-bg-color: #2e3442; + --fragment-lineno-link-hover-fg-color: #6fd0c2; + --fragment-lineno-link-hover-bg-color: #3a4150; + --fragment-copy-ok-color: #4caf50; + + /* tooltips */ + --tooltip-foreground-color: rgba(255, 255, 255, 0.87); + --tooltip-background-color: rgba(26, 29, 36, 0.95); + --tooltip-arrow-background-color: #1a1d24; + --tooltip-border-color: rgba(76, 84, 104, 0.7); + --tooltip-doc-color: #b0bec5; + --tooltip-declaration-color: #66bb6a; + --tooltip-link-color: #6fd0c2; + --tooltip-shadow: none; + + /* fonts (same stack as the MkDocs site) */ + --font-family-normal: Roboto, system-ui, -apple-system, 'Segoe UI', Ubuntu, 'Noto Sans', sans-serif; + --font-family-monospace: 'Roboto Mono', 'JetBrains Mono', Consolas, Monaco, monospace; + --font-family-nav: Roboto, system-ui, sans-serif; + --font-family-title: Roboto, system-ui, sans-serif; + --font-family-toc: Roboto, system-ui, sans-serif; + --font-family-search: Roboto, system-ui, sans-serif; + --font-family-tooltip: Roboto, sans-serif; + } +} + +/* ------------------------------------------------------------------ */ +/* Small Material structural tweaks (both schemes) */ +/* ------------------------------------------------------------------ */ + +/* elevation for the top app bar */ +#top { + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12); +} + +/* medium-weight titles, like Material headlines */ +#projectname { + font-weight: 500; +} + +#projectnumber { + color: var(--memdecl-template-color); +} + +h1.groupheader, +h2.groupheader, +h3.groupheader { + font-weight: 500; +} + +/* rounded search field and breadcrumb chip */ +#MSearchField { + border-radius: 4px; +} + +#nav-path ul { + border-radius: 4px; +} +} \ No newline at end of file