diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml index f2524974..0366dcf3 100644 --- a/.github/workflows/jekyll-gh-pages.yml +++ b/.github/workflows/jekyll-gh-pages.yml @@ -91,7 +91,7 @@ jobs: - name: Render book PDF run: | mkdir -p _pdf - node render-book.mjs _site-pdf/book.html -o "_pdf/twinBASIC Book.pdf" --outline-tags h1,h2,h3,h4 --additional-script ../perf/detach-pages.js + node ../book/render-book.mjs _site-pdf/book.html -o "_pdf/twinBASIC Book.pdf" --outline-tags h1,h2,h3,h4 --additional-script ../perf/detach-pages.js working-directory: ./docs - name: Upload Pages artifact uses: actions/upload-pages-artifact@v5 diff --git a/WIP.md b/WIP.md index 44b2d31e..b448a63e 100644 --- a/WIP.md +++ b/WIP.md @@ -432,17 +432,15 @@ Historical engineering notes from the Jekyll era --- the original build pipeline ## Build / preview -From `docs/`: - -- `build.bat` — runs `node ..\builder\tbdocs.mjs --src .` which produces three trees in one pass: the online copy at `_site/`, a `file://`-browsable copy at `_site-offline/`, and the sparse pagedjs source at `_site-pdf/`. The offline pass adds ~700 ms and the PDF pass adds ~150 ms on top of the ~2 s online build. Toggle `also_build_offline` / `also_build_pdf` in `_config.yml` (or pass `--no-offline` / `--no-pdf`) to skip a sibling output. -- `serve.bat` — runs `tbdocs --serve`: initial build, then a long-lived process with watcher, debounced rebuilds, and SSE-driven browser auto-reload. Ctrl+C to stop. +- `build.bat` — runs `node builder\tbdocs.mjs --src docs` which produces three trees in one pass: the online copy at `_site/`, a `file://`-browsable copy at `_site-offline/`, and the sparse pagedjs source at `_site-pdf/`. The offline pass adds ~700 ms and the PDF pass adds ~150 ms on top of the ~2 s online build. Toggle `also_build_offline` / `also_build_pdf` in `_config.yml` (or pass `--no-offline` / `--no-pdf`) to skip a sibling output. +- `serve.bat` — runs `tbdocs --serve`: initial build, then a long-lived process with watcher, debounced rebuilds, and SSE-driven browser auto-reload. Writes to `docs/_serve/` (disjoint from `build.bat`'s `_site*/`) and skips the offline + PDF passes — so a one-off `build.bat` for the PDF or offline mirror doesn't disturb the live preview. Ctrl+C to stop. - `check.bat` — link + integrity check (offline `scripts/check_links.mjs` against `_site/` and `_site-offline/`; the offline pass also runs `--forbid 'https://docs.twinbasic.com'` to catch surviving live-site links). -- `book.bat` — renders the PDF from `_site-pdf/book.html` via `node render-book.mjs` into `_pdf/book.pdf`. Run `build.bat` first to populate `_site-pdf/`. +- `book.bat` — renders the PDF from `docs\_site-pdf\book.html` via `node book\render-book.mjs` into `docs\_pdf\book.pdf`. Run `build.bat` first to populate `_site-pdf/`. ## Site integrity check -After a batch of changes, verify the site builds clean and all links resolve. From the `docs/` folder, run: +After a batch of changes, verify the site builds clean and all links resolve: ```sh build.bat && check.bat diff --git a/docs/book.bat b/book.bat similarity index 54% rename from docs/book.bat rename to book.bat index cbfe2cc2..39eacd5b 100644 --- a/docs/book.bat +++ b/book.bat @@ -1,7 +1,7 @@ @echo off -rem PDF render only. Run build.bat (or `bundle exec jekyll build`) first -rem so _site-pdf\book.html and its dependencies exist; this script -rem assumes the Pdfify plugin has already populated _site-pdf\. +@pushd "%~dp0" +rem PDF render only. Run build.bat first so docs\_site-pdf\book.html and +rem its dependencies exist. rem rem render-book.mjs drives puppeteer + paged.js + pdf-lib directly so rem we control pdf-lib's parseSpeed (the default yields the event loop @@ -10,19 +10,20 @@ rem for no reason in Node -- see perf\README.md "Profiling pdf-lib's rem load" for the full diagnosis). pagedjs-cli passed no options to rem load/save and inherited that cost; we don't. rem -rem --additional-script ..\perf\detach-pages.js injects a Paged.Handler +rem --additional-script perf\detach-pages.js injects a Paged.Handler rem that hides each finalised page from Chromium's layout tree and rem restores them all before page.pdf() runs. Drops total render from rem ~104s to ~51s on the 1638-page book by eliminating the O(n^2) rem getBoundingClientRect cost in paged.js's overflow walker. -if not exist _site-pdf\book.html ( - echo _site-pdf\book.html not found. Run build.bat first. +if not exist docs\_site-pdf\book.html ( + echo docs\_site-pdf\book.html not found. Run build.bat first. exit /b 1 ) -if not exist ..\node_modules\puppeteer\package.json ( +if not exist node_modules\puppeteer\package.json ( echo Installing dependencies... - pushd .. && call npm install && popd + call npm install if errorlevel 1 exit /b 1 ) -if not exist _pdf mkdir _pdf -node render-book.mjs _site-pdf\book.html -o "_pdf\twinBASIC Book.pdf" --outline-tags h1,h2,h3,h4 --additional-script ..\perf\detach-pages.js +if not exist docs\_pdf mkdir docs\_pdf +node book\render-book.mjs docs\_site-pdf\book.html -o "docs\_pdf\twinBASIC Book.pdf" --outline-tags h1,h2,h3,h4 --additional-script perf\detach-pages.js +@popd diff --git a/docs/lib/fast-array-onebuf.mjs b/book/lib/fast-array-onebuf.mjs similarity index 100% rename from docs/lib/fast-array-onebuf.mjs rename to book/lib/fast-array-onebuf.mjs diff --git a/docs/lib/fast-decode-name.mjs b/book/lib/fast-decode-name.mjs similarity index 100% rename from docs/lib/fast-decode-name.mjs rename to book/lib/fast-decode-name.mjs diff --git a/docs/lib/fast-dict-array.mjs b/book/lib/fast-dict-array.mjs similarity index 100% rename from docs/lib/fast-dict-array.mjs rename to book/lib/fast-dict-array.mjs diff --git a/docs/lib/fast-dict-iter.mjs b/book/lib/fast-dict-iter.mjs similarity index 100% rename from docs/lib/fast-dict-iter.mjs rename to book/lib/fast-dict-iter.mjs diff --git a/docs/lib/fast-dict-onebuf.mjs b/book/lib/fast-dict-onebuf.mjs similarity index 100% rename from docs/lib/fast-dict-onebuf.mjs rename to book/lib/fast-dict-onebuf.mjs diff --git a/docs/lib/fast-indirect-objects.mjs b/book/lib/fast-indirect-objects.mjs similarity index 100% rename from docs/lib/fast-indirect-objects.mjs rename to book/lib/fast-indirect-objects.mjs diff --git a/docs/lib/fast-inflate.mjs b/book/lib/fast-inflate.mjs similarity index 100% rename from docs/lib/fast-inflate.mjs rename to book/lib/fast-inflate.mjs diff --git a/docs/lib/fast-number-to-string.mjs b/book/lib/fast-number-to-string.mjs similarity index 100% rename from docs/lib/fast-number-to-string.mjs rename to book/lib/fast-number-to-string.mjs diff --git a/docs/lib/fast-parse-dict.mjs b/book/lib/fast-parse-dict.mjs similarity index 100% rename from docs/lib/fast-parse-dict.mjs rename to book/lib/fast-parse-dict.mjs diff --git a/docs/lib/fast-parse-name.mjs b/book/lib/fast-parse-name.mjs similarity index 100% rename from docs/lib/fast-parse-name.mjs rename to book/lib/fast-parse-name.mjs diff --git a/docs/lib/fast-parse-number.mjs b/book/lib/fast-parse-number.mjs similarity index 100% rename from docs/lib/fast-parse-number.mjs rename to book/lib/fast-parse-number.mjs diff --git a/docs/lib/fast-parse-object.mjs b/book/lib/fast-parse-object.mjs similarity index 100% rename from docs/lib/fast-parse-object.mjs rename to book/lib/fast-parse-object.mjs diff --git a/docs/lib/fast-pdfnumber-pool.mjs b/book/lib/fast-pdfnumber-pool.mjs similarity index 100% rename from docs/lib/fast-pdfnumber-pool.mjs rename to book/lib/fast-pdfnumber-pool.mjs diff --git a/docs/lib/fast-refs-class.mjs b/book/lib/fast-refs-class.mjs similarity index 100% rename from docs/lib/fast-refs-class.mjs rename to book/lib/fast-refs-class.mjs diff --git a/docs/lib/fast-refs.mjs b/book/lib/fast-refs.mjs similarity index 100% rename from docs/lib/fast-refs.mjs rename to book/lib/fast-refs.mjs diff --git a/docs/lib/fast-size-in-bytes.mjs b/book/lib/fast-size-in-bytes.mjs similarity index 100% rename from docs/lib/fast-size-in-bytes.mjs rename to book/lib/fast-size-in-bytes.mjs diff --git a/docs/lib/fast-sync-load.mjs b/book/lib/fast-sync-load.mjs similarity index 100% rename from docs/lib/fast-sync-load.mjs rename to book/lib/fast-sync-load.mjs diff --git a/docs/lib/measure-pass.mjs b/book/lib/measure-pass.mjs similarity index 100% rename from docs/lib/measure-pass.mjs rename to book/lib/measure-pass.mjs diff --git a/docs/lib/outline.mjs b/book/lib/outline.mjs similarity index 100% rename from docs/lib/outline.mjs rename to book/lib/outline.mjs diff --git a/docs/lib/paged.browser.js b/book/lib/paged.browser.js similarity index 100% rename from docs/lib/paged.browser.js rename to book/lib/paged.browser.js diff --git a/docs/lib/parallel-deflate.mjs b/book/lib/parallel-deflate.mjs similarity index 100% rename from docs/lib/parallel-deflate.mjs rename to book/lib/parallel-deflate.mjs diff --git a/docs/lib/postprocesser.mjs b/book/lib/postprocesser.mjs similarity index 100% rename from docs/lib/postprocesser.mjs rename to book/lib/postprocesser.mjs diff --git a/docs/lib/progress-handler.js b/book/lib/progress-handler.js similarity index 100% rename from docs/lib/progress-handler.js rename to book/lib/progress-handler.js diff --git a/docs/render-book.mjs b/book/render-book.mjs similarity index 99% rename from docs/render-book.mjs rename to book/render-book.mjs index 08117d54..427586b0 100644 --- a/docs/render-book.mjs +++ b/book/render-book.mjs @@ -155,7 +155,7 @@ import { PDFDocument } from 'pdf-lib'; // heap traffic drops ~13 % (123 MB -> 107 MB). PDFNumber is // immutable so sharing is safe. // measure-pass (Phase 1) -- no-allocate byte walker -// (docs/lib/measure-pass.mjs) that runs in front of +// (lib/measure-pass.mjs) that runs in front of // PDFDocument.load on the raw Chrome PDF and counts dictSlots // + arraySlots. The counts drive setExpectedDictSlots() on // fast-dict-onebuf and setExpectedArraySlots() on diff --git a/build.bat b/build.bat new file mode 100644 index 00000000..71162c2d --- /dev/null +++ b/build.bat @@ -0,0 +1,3 @@ +@pushd "%~dp0" +node builder\tbdocs.mjs --src docs %* +@popd diff --git a/builder/PLAN-1.md b/builder/PLAN-1.md index a2927300..caefa593 100644 --- a/builder/PLAN-1.md +++ b/builder/PLAN-1.md @@ -58,16 +58,23 @@ project's `_config.yml` `exclude:` list, and tbdocs-specific opt-outs. | `*.bat` | Per `_config.yml exclude:` — `build.bat`, `serve.bat`, `check.bat`, `book.bat`, `profile-rbspy.bat`, `profile-rubyprof.bat`. | | `redirects.json` | Per `_config.yml exclude:`. Note: doesn't currently exist in the tree, but the entry is there to be defensive against future regressions. | -**Excluded directories — tbdocs-specific:** +**Excluded patterns — tbdocs-specific:** -| Path | Why | +| Pattern | Why | |---|---| -| `assets/css/` | Theme CSS / SCSS. Jekyll currently runs Liquid + Sass over `just-the-docs-combined.scss` and `just-the-docs-head-nav.css`, copies `print.css` / `rouge.css` verbatim. tbdocs takes the four compiled files from `builder/assets/css/` instead (per PLAN.md "Static Asset Extraction"). Phase 5 handles the copy. Skipping in Phase 1 prevents the source tree from shadowing the prebuilt artifacts. | -| `assets/js/` | Same story. The single `theme-switch.js` file in the source comes through pre-built from `builder/assets/js/` together with the just-the-docs runtime and the lunr vendor bundle. | +| `**/*.scss` | SCSS sources fed into [`scss.mjs`](scss.mjs) (the only entry point currently lives at `docs/assets/css/just-the-docs-combined.scss`, with partials under `docs/_sass/custom/`). The compiled output is emitted on `generatedAssets` and written by Phase 5's `writeGeneratedAssets`, so letting Phase 1 enumerate the source `.scss` would shadow the generator output. | +| `**/*.mmd` | Mermaid diagram sources fed into [`mermaid.mjs`](mermaid.mjs)'s preprocessor. The `.svg` siblings are kept --- content pages reference those. | -`assets/images/` is **not** excluded — it carries the mermaid SVG renders -(`assets/images/mmd/*.svg`) that content pages reference, and the -`favicon.png` should keep landing at the same URL. +`assets/css/` and `assets/js/` themselves are **not** excluded any more --- +the project-owned theme files now live there (`assets/css/print.css`, +`assets/css/just-the-docs-head-nav.css`, `assets/js/theme-switch.js`) and +ride the normal static-file copy pipeline into `_site/`. Vendored +just-the-docs JS lives under `builder/vendor/just-the-docs/assets/` and +is copied separately by Phase 5's `copyTheme`. + +`assets/images/` is also not excluded --- it carries the rendered mermaid +SVGs (`assets/images/mmd/*.svg`) referenced by content pages, plus the +favicon and any content images. ### Assumption: the exclude list is complete @@ -291,8 +298,8 @@ export async function discover(srcRoot) { "**/_*/**", // …and at any depth (catches _Images). "**/.git/**", "**/node_modules/**", - "assets/css/**", - "assets/js/**", + "**/*.scss", // SCSS sources -- compiled by scss.mjs. + "**/*.mmd", // Mermaid sources -- compiled by mermaid.mjs. // Top-level Jekyll/toolchain files: "Gemfile", "Gemfile.lock", @@ -436,17 +443,23 @@ Per the user's choice. Reasons: The orchestrator (`tbdocs.mjs`) is responsible for invoking `book.mjs` with the source root so it can read `_data/book.yml` itself. -### D5. `assets/css/` and `assets/js/` are excluded - -Per PLAN.md "Static Asset Extraction": the production CSS / JS lives -prebuilt in `builder/assets/`. Letting Phase 1 also enumerate the source -versions would force Phase 5 to disambiguate which copy wins — better to -make the source/prebuilt split a Phase 1 concern. - -`assets/images/` is **not** excluded. It carries the mermaid SVG renders -(`assets/images/mmd/*.svg`) referenced by content pages, plus is where -new content images would naturally land. Phase 5 copies these via the -normal static-file pipeline. +### D5. Source-vs-output split is by extension, not by directory + +`**/*.scss` and `**/*.mmd` are excluded because they're inputs to +[`scss.mjs`](scss.mjs) and [`mermaid.mjs`](mermaid.mjs) respectively --- +both run before Phase 1 and write either to `generatedAssets` (CSS) or +back under `srcRoot` (the `.svg` siblings the Mermaid preprocessor +emits). Letting Phase 1 enumerate the `.scss` sources would race the +generator output at write time; letting it enumerate the `.mmd` sources +would publish a non-deployable artifact. + +The broader `assets/` tree is **not** excluded. Project-owned theme files +(`assets/css/print.css`, `assets/css/just-the-docs-head-nav.css`, +`assets/js/theme-switch.js`) live there and ride the normal static-file +copy pipeline; `assets/images/` carries content images plus the rendered +mermaid SVGs. The vendored just-the-docs runtime JS lives outside +`docs/` under `builder/vendor/just-the-docs/assets/` and Phase 5's +`copyTheme` carries it across separately. **Risk:** if someone adds a new content asset under `assets/css/` or `assets/js/` (an inline icon, a tiny utility script), Phase 1 will drop diff --git a/builder/PLAN.md b/builder/PLAN.md index 06b56e93..b12ff397 100644 --- a/builder/PLAN.md +++ b/builder/PLAN.md @@ -113,8 +113,14 @@ It reads from `docs/` and writes to `docs/_site/` / `docs/_site-offline/` / `docs/_site-pdf/` -- the same destinations Jekyll uses, so deployment tooling (GitHub Pages serving from `/docs/`) stays unchanged. -Static assets (CSS, JS, SVGs) extracted once from the current Jekyll build live in -`builder/assets/` and get copied verbatim to `docs/_site/assets/` on each build. +Site assets are assembled from three sources: project content under `docs/assets/` +(SCSS entry point, hand-written CSS, project JS, content images, Mermaid diagrams); +vendored just-the-docs bits under `builder/vendor/just-the-docs/` (`_sass/` compiled +on every build by [`scss.mjs`](scss.mjs); `assets/js/just-the-docs.js` + `vendor/lunr.min.js` +copied verbatim by [`write.mjs`](write.mjs)); and generated-in-process artifacts +(`just-the-docs-combined.css` from `scss.mjs`, `tb-highlight.css` from +[`highlight-theme.mjs`](highlight-theme.mjs)). See the **Asset layout** section below +for the full breakdown. ## Dependencies @@ -169,12 +175,12 @@ with no perf budget set yet. Input: the `docs/` source tree. Excluded: all `_*` directories (catches `_site/`, `_site-offline/`, `_site-pdf/`, `_data/`, `_includes/`, `_layouts/`, -`_sass/`, `_plugins/`, `_profile/`, and every `_Images/`), `assets/css/` and -`assets/js/` (theme assets, sourced from `builder/assets/` instead), -top-level Jekyll/toolchain files (`_config.yml`, `Gemfile`, `Gemfile.lock`, -`*.bat`), and `.jekyll-cache` / `.sass-cache` / `node_modules`. The builder -itself lives at `../builder/` (outside `docs/`) and isn't part of the -source tree. +`_sass/`, `_plugins/`, `_profile/`, and every `_Images/`), SCSS sources +(`**/*.scss`, compiled separately by [`scss.mjs`](scss.mjs)), Mermaid sources +(`**/*.mmd`, the `.svg` siblings are kept), top-level Jekyll/toolchain files +(`_config.yml`, `Gemfile`, `Gemfile.lock`, `*.bat`), and `.jekyll-cache` / +`.sass-cache` / `node_modules`. The builder itself lives at `../builder/` +(outside `docs/`) and isn't part of the source tree. Output: `{ pages, staticFiles }`. @@ -327,10 +333,17 @@ block from `page.navLevels` -- positional `:nth-child()` selectors. ### Phase 5: WRITE ONLINE (`write.mjs`) - For each page: write destPath to `_site/` -- Copy theme assets: `builder/assets/` -> `docs/_site/assets/` (CSS, JS, sprites) +- Copy vendored theme JS: `builder/vendor/just-the-docs/assets/` -> + `docs/_site/assets/` (`just-the-docs.js` + `vendor/lunr.min.js`) - Copy every entry in `staticFiles[]` (from Phase 1) to its `destRel` under - `_site/` -- content images, `favicon.png`, `CNAME`, `render-book.mjs`, - `lib/*.mjs`, `assets/images/mmd/*` + `_site/` -- project-owned theme files (`assets/css/print.css`, + `assets/css/just-the-docs-head-nav.css`, `assets/js/theme-switch.js`), + content images, `favicon.png`, `CNAME`, `render-book.mjs`, `lib/*.mjs`, + `assets/images/mmd/*.svg` +- After the parallel batch, write `generatedAssets[]` --- the SCSS-compiled + `just-the-docs-combined.css` and the highlight-theme `tb-highlight.css`. + CSS files in any of the three paths get a baseurl rewrite when the deployment + baseurl is non-empty Pure filesystem I/O -- no transformation, no URL rewriting. Phase 6 adds `search-data.json`, redirects, sitemap, and robots.txt alongside @@ -452,18 +465,24 @@ discipline of Phases 3-9 had deferred. All five PRs landed: B6 (linkify) and B18 (streaming book.html write) were dropped. Full spec: [PLAN-11.md](PLAN-11.md). -## Static Asset Extraction (One-Time Setup) +## Asset layout -Before the first build, extract from the current Jekyll output: +`_site/assets/` is assembled from three sources at build time --- nothing is +extracted out of a Jekyll build any more. -1. **CSS** -- `_site/assets/css/just-the-docs-combined.css` (compiled theme with custom - colors baked in), `just-the-docs-head-nav.css`, `print.css`, `rouge.css` -2. **JS** -- `_site/assets/js/just-the-docs.js`, `vendor/lunr.min.js` -3. **SVG sprites** -- the `` defs block from any rendered page -4. **Favicon** -- `favicon.png` +| Source on disk | What lives there | Phase that delivers it | +|---|---|---| +| `docs/assets/` | Project-owned content: the SCSS entry point (`css/just-the-docs-combined.scss`, excluded from copy, fed into Sass), project JS (`js/theme-switch.js`), hand-written stylesheets (`css/print.css`, `css/just-the-docs-head-nav.css`), Mermaid diagrams (`.mmd` sources excluded, `.svg` renders included), content images. | Discovered by Phase 1, copied by Phase 5's `copyStaticFiles`. | +| `builder/vendor/just-the-docs/` | Vendored from the just-the-docs gem (v0.10.1): `_sass/` (theme SCSS sources, fed into the compilation); `assets/js/just-the-docs.js` + `assets/js/vendor/lunr.min.js` (chrome runtime, copied verbatim, `just-the-docs.js` patched in tree). See [`builder/vendor/just-the-docs/README.md`](vendor/just-the-docs/README.md). | `_sass/` consumed by [`scss.mjs`](scss.mjs); `assets/` copied by Phase 5's `copyTheme`. | +| Generated in-process | `just-the-docs-combined.css` from [`scss.mjs`](scss.mjs); `tb-highlight.css` from [`highlight-theme.mjs`](highlight-theme.mjs). Neither is committed; both are rebuilt every run. | Pushed onto `generatedAssets`; written by Phase 5's `writeGeneratedAssets` after the parallel copy batch. | -These live in `builder/assets/` and get copied verbatim to `docs/_site/assets/` on each build. -If the custom color scheme ever changes, recompile once manually with `sass`. +CSS files in any of the three paths run through a baseurl rewrite +(`url("/path")` → `url("/path")`) when the deployment baseurl is +non-empty. + +Bumping the just-the-docs gem version is a re-vendor of `_sass/` and +`assets/js/` from the new tag plus re-applying the `just-the-docs.js` +patches; procedure in the vendor README. ## What Doesn't Get Ported diff --git a/builder/assets/README.md b/builder/assets/README.md deleted file mode 100644 index ba23adfd..00000000 --- a/builder/assets/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# builder/assets/ - -Prebuilt theme assets the JS builder ships verbatim into the rendered -site at `/assets/`. Phase 5 (`write.mjs`) copies this whole -tree as a unit — no transformation, no per-file allow-list. Anything -added under here lands in every build. - -The seven files are the just-the-docs chrome's runtime dependencies. -The HTML templates in `builder/template.mjs` reference each one by -literal path; reorganising the tree breaks the chrome. - -These are the **online** variants — no offline-mode patches applied. -Phase 7 (`builder/offline.mjs`) copies them from `/assets/` -into `_site-offline/` and re-runs the offlinify rewrites itself. - -## Inventory - -The six files below were captured one-off from `docs/_site/assets/` -after a clean Jekyll build at cutover time; the legacy Jekyll source -set has since been retired, so the upstream sources are listed for -historical reference only. The syntax-highlight stylesheet -(`tb-highlight.css`) is a seventh asset that is **generated at build -time** by `builder/highlight-theme.mjs` from the vendored -`builder/themes/*.theme` source files — see [PLAN-11.md](../PLAN-11.md) -§5.1 (B2). - -| File | Upstream source at extraction time | Notes | -|---|---|---| -| `css/just-the-docs-combined.css` | `docs/assets/css/just-the-docs-combined.scss` — pulled in `_sass/just-the-docs.scss.liquid` (via the just-the-docs gem) plus `_sass/custom/twinbasic-light` / `_sass/custom/twinbasic-dark` for the project's dark/light variants and `_sass/custom/custom.scss` / `_sass/custom/admonitions.scss` for site-specific tweaks | The site stylesheet. Compiled by Jekyll's Sass pipeline; vendored here to avoid a Sass dep in the JS build. | -| `css/just-the-docs-head-nav.css` | `docs/assets/css/just-the-docs-head-nav.css` — hand-written CSS with a small Liquid prelude (newline-capture) | Per-page nav-prefix override sheet. | -| `css/print.css` | `docs/assets/css/print.css` — hand-written self-contained print stylesheet | The `@media print` sheet; used by Phase 8's PDF tree too. | -| `js/just-the-docs.js` | just-the-docs gem 0.10.1 (`assets/js/just-the-docs.js`) | The runtime that wires the sidebar, search, copy-button click handler, dark-mode toggle. Patched in tree: the upstream `processCodeBlocks` DOM-injection step is retired (PLAN-11 B5 -- the button HTML is now server-rendered by `builder/highlight.mjs`); the click handler binds to those pre-rendered buttons instead. Re-apply when bumping the upstream gem version. | -| `js/theme-switch.js` | `docs/assets/js/theme-switch.js` — project-local script | The dark-mode toggle. | -| `js/vendor/lunr.min.js` | just-the-docs gem 0.10.1 (`assets/js/vendor/lunr.min.js`) | The search runtime. | - -Theme version pinned at extraction time: just-the-docs 0.10.1. - -## Re-extraction procedure - -The Ruby toolchain is no longer in tree; re-extraction therefore -requires temporarily restoring the legacy Jekyll source set -(`docs/_plugins/`, `docs/_includes/`, `docs/_layouts/`, `docs/_sass/`, -`docs/Gemfile`, `docs/Gemfile.lock`) from git history. Pick the cutover -commit (`git log --oneline | grep "Phase 10"` then the relevant -follow-up that retired Ruby) and check out those paths into a worktree. - -```sh -# In a clean worktree with the Jekyll source set restored: -cd docs && bundle install && bundle exec jekyll build && cd .. - -cp docs/_site/assets/css/just-the-docs-combined.css builder/assets/css/ -cp docs/_site/assets/css/just-the-docs-head-nav.css builder/assets/css/ -cp docs/_site/assets/css/print.css builder/assets/css/ -cp docs/_site/assets/js/just-the-docs.js builder/assets/js/ -cp docs/_site/assets/js/theme-switch.js builder/assets/js/ -cp docs/_site/assets/js/vendor/lunr.min.js builder/assets/js/vendor/ -``` - -Trigger conditions that warrant re-extraction: - -- a `just-the-docs` version bump, -- a custom SCSS change applied to a temporarily-restored `_sass/custom/`, -- a hand-written CSS change to one of the three CSS files above, -- a `theme-switch.js` change. - -Note: `rouge.css` was retired in PLAN-11 §5.1 (B2). The syntax- -highlight stylesheet is now `tb-highlight.css`, generated at build -time from `builder/themes/*.theme` — no extraction step. - -After re-extracting, run `cd docs && build.bat && check.bat` and -confirm the rendered chrome still works. - -## CSS class contract - -The HTML emitted by Phase 3 (`render.mjs` / `highlight.mjs`) and -Phase 4 (`template.mjs`) targets the class names below; the bundled -stylesheets style them. Removing a class from the source SCSS without -adjusting the JS emitter (or vice versa) breaks the rendered chrome. - -**Layout / chrome** (`template.mjs`): - -- `side-bar`, `site-nav`, `nav-list`, `nav-list-item`, - `nav-list-link`, `nav-list-expander btn-reset`, - `nav-list-link external`, `nav-list-item external` -- `main`, `main-header`, `main-content-wrap`, `main-content` -- `site-header`, `site-title`, `site-logo`, `site-button`, - `site-button btn-reset`, `site-footer` -- `aux-nav`, `aux-nav-list`, `aux-nav-list-item` -- `breadcrumb-nav`, `breadcrumb-nav-list`, `breadcrumb-nav-list-item` -- `search`, `search-input`, `search-input-wrap`, `search-label`, - `search-icon`, `search-button btn-reset`, `search-overlay`, - `search-results` -- `skip-to-main` -- `text-delta`, `text-small` -- Bootstrap-icons utility names `bi bi-clipboard`, - `bi bi-clipboard-check-fill` (for the code-block copy button) -- Feather-icons utility names `feather feather-{menu,search,link, - external-link,chevron-right,file,sun}` -- Tabler-icons utility name `icon-tabler-moon` - -**Markdown body** (`render.mjs`): - -- `highlight`, `language- highlighter-rouge`, - `language-plaintext highlighter-rouge` -- `anchor-heading` -- `footnote`, `footnotes`, `reversefootnote` -- `table-wrapper` -- `markdown-alert markdown-alert-`, `markdown-alert-title`, - `octicon octicon-{alert,info,light-bulb,report,stop}` - (the GitHub-flavoured admonition palette) - -**Syntax highlighting** (`highlight.mjs` + `highlight-theme.mjs` + the -generated `tb-highlight.css`): - -- The palette-class set: `.c1`, `.c2`, … `.cN` — one class per - unique (Light props, Dark props) tuple across the Symbols the - renderer can land on. Stable across builds because the tuples - sort deterministically. -- `highlight.mjs` looks up each token's Shiki scope chain via the - theme's `classForScope`, then emits `` for hits - and no wrap for misses (plain punctuation, generic identifiers, - HTML tag names — the IDE theme doesn't colour those). -- `tb-highlight.css` is generated at build time and written to - `/assets/css/tb-highlight.css`; the light palette lives - at root, the dark palette under `html.dark-mode`. The chrome's - theme toggle flips both halves together. - -If the IDE refreshes its themes (a tB BETA bump that changes -palette colours or adds new Symbols), refresh the three files under -`builder/themes/` from the BETA's installer — `Light.theme`, -`Dark.theme`, `Classic.theme` — and rebuild. `highlight-theme.mjs`'s -`SCOPE_TO_SYMBOL` table maps Shiki scopes to the upstream Symbol -names; only changes there require code edits, palette colour shifts -do not. diff --git a/builder/assets/css/just-the-docs-combined.css b/builder/assets/css/just-the-docs-combined.css deleted file mode 100644 index ee603dac..00000000 --- a/builder/assets/css/just-the-docs-combined.css +++ /dev/null @@ -1,3560 +0,0 @@ -@charset "UTF-8"; -.highlight, pre.highlight { background: #f9f9f9; color: #383942; } - -.highlight pre { background: #f9f9f9; } - -.highlight .hll { background: #f9f9f9; } - -.highlight .c { color: #9fa0a6; font-style: italic; } - -.highlight .err { color: #fff; background-color: #e05151; } - -.highlight .k { color: #a625a4; } - -.highlight .l { color: #50a04f; } - -.highlight .n { color: #383942; } - -.highlight .o { color: #383942; } - -.highlight .p { color: #383942; } - -.highlight .cm { color: #9fa0a6; font-style: italic; } - -.highlight .cp { color: #9fa0a6; font-style: italic; } - -.highlight .c1 { color: #9fa0a6; font-style: italic; } - -.highlight .cs { color: #9fa0a6; font-style: italic; } - -.highlight .ge { font-style: italic; } - -.highlight .gs { font-weight: 700; } - -.highlight .kc { color: #a625a4; } - -.highlight .kd { color: #a625a4; } - -.highlight .kn { color: #a625a4; } - -.highlight .kp { color: #a625a4; } - -.highlight .kr { color: #a625a4; } - -.highlight .kt { color: #a625a4; } - -.highlight .ld { color: #50a04f; } - -.highlight .m { color: #b66a00; } - -.highlight .s { color: #50a04f; } - -.highlight .na { color: #b66a00; } - -.highlight .nb { color: #ca7601; } - -.highlight .nc { color: #ca7601; } - -.highlight .no { color: #ca7601; } - -.highlight .nd { color: #ca7601; } - -.highlight .ni { color: #ca7601; } - -.highlight .ne { color: #ca7601; } - -.highlight .nf { color: #383942; } - -.highlight .nl { color: #ca7601; } - -.highlight .nn { color: #383942; } - -.highlight .nx { color: #383942; } - -.highlight .py { color: #ca7601; } - -.highlight .nt { color: #e35549; } - -.highlight .nv { color: #ca7601; } - -.highlight .ow { font-weight: 700; } - -.highlight .w { color: #f8f8f2; } - -.highlight .mf { color: #b66a00; } - -.highlight .mh { color: #b66a00; } - -.highlight .mi { color: #b66a00; } - -.highlight .mo { color: #b66a00; } - -.highlight .sb { color: #50a04f; } - -.highlight .sc { color: #50a04f; } - -.highlight .sd { color: #50a04f; } - -.highlight .s2 { color: #50a04f; } - -.highlight .se { color: #50a04f; } - -.highlight .sh { color: #50a04f; } - -.highlight .si { color: #50a04f; } - -.highlight .sx { color: #50a04f; } - -.highlight .sr { color: #0083bb; } - -.highlight .s1 { color: #50a04f; } - -.highlight .ss { color: #0083bb; } - -.highlight .bp { color: #ca7601; } - -.highlight .vc { color: #ca7601; } - -.highlight .vg { color: #ca7601; } - -.highlight .vi { color: #e35549; } - -.highlight .il { color: #b66a00; } - -.highlight .gu { color: #75715e; } - -.highlight .gd { color: #e05151; } - -.highlight .gi { color: #43d089; } - -.highlight .language-json .w + .s2 { color: #e35549; } - -.highlight .language-json .kc { color: #0083bb; } - -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -/* Document ========================================================================== */ -/** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ -html { line-height: 1.15; /* 1 */ text-size-adjust: 100%; /* 2 */ } - -/* Sections ========================================================================== */ -/** Remove the margin in all browsers. */ -body { margin: 0; } - -/** Render the `main` element consistently in IE. */ -main { display: block; } - -/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ -h1 { font-size: 2em; margin: 0.67em 0; } - -/* Grouping content ========================================================================== */ -/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ -hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } - -/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ -pre { font-family: monospace; /* 1 */ font-size: 1em; /* 2 */ } - -/* Text-level semantics ========================================================================== */ -/** Remove the gray background on active links in IE 10. */ -a { background-color: transparent; } - -/** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ -abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } - -/** Add the correct font weight in Chrome, Edge, and Safari. */ -b, strong { font-weight: bolder; } - -/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ -code, kbd, samp { font-family: monospace; /* 1 */ font-size: 1em; /* 2 */ } - -/** Add the correct font size in all browsers. */ -small { font-size: 80%; } - -/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ -sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } - -sub { bottom: -0.25em; } - -sup { top: -0.5em; } - -/* Embedded content ========================================================================== */ -/** Remove the border on images inside links in IE 10. */ -img { border-style: none; } - -/* Forms ========================================================================== */ -/** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ -button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } - -/** Show the overflow in IE. 1. Show the overflow in Edge. */ -button, input { /* 1 */ overflow: visible; } - -/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ -button, select { /* 1 */ text-transform: none; } - -/** Correct the inability to style clickable types in iOS and Safari. */ -button, [type="button"], [type="reset"], [type="submit"] { appearance: button; } - -/** Remove the inner border and padding in Firefox. */ -button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } - -/** Restore the focus styles unset by the previous rule. */ -button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } - -/** Correct the padding in Firefox. */ -fieldset { padding: 0.35em 0.75em 0.625em; } - -/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ -legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } - -/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ -progress { vertical-align: baseline; } - -/** Remove the default vertical scrollbar in IE 10+. */ -textarea { overflow: auto; } - -/** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ -[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } - -/** Correct the cursor style of increment and decrement buttons in Chrome. */ -[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } - -/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ -[type="search"] { appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } - -/** Remove the inner padding in Chrome and Safari on macOS. */ -[type="search"]::-webkit-search-decoration { appearance: none; } - -/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ -::-webkit-file-upload-button { appearance: button; /* 1 */ font: inherit; /* 2 */ } - -/* Interactive ========================================================================== */ -/* Add the correct display in Edge, IE 10+, and Firefox. */ -details { display: block; } - -/* Add the correct display in all browsers. */ -summary { display: list-item; } - -/* Misc ========================================================================== */ -/** Add the correct display in IE 10+. */ -template { display: none; } - -/** Add the correct display in IE 10. */ -[hidden] { display: none; } - -:root { color-scheme: light; } - -* { box-sizing: border-box; } - -html { scroll-behavior: smooth; } - -html { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { html { font-size: 1rem !important; } } - -body { font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Segoe UI Emoji"; font-size: inherit; line-height: 1.4; color: #5c5962; background-color: #fff; overflow-wrap: break-word; } - -ol, ul, dl, pre, address, blockquote, table, div, hr, form, fieldset, noscript .table-wrapper { margin-top: 0; } - -h1, h2, h3, h4, h5, h6, #toctitle { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #27262b; } - -p { margin-top: 1em; margin-bottom: 1em; } - -a { color: #7253ed; text-decoration: none; } - -a:not([class]) { text-decoration: underline; text-decoration-color: #eeebee; text-underline-offset: 2px; } - -a:not([class]):hover { text-decoration-color: rgba(114, 83, 237, 0.45); } - -code { font-family: "SFMono-Regular", menlo, consolas, monospace; font-size: 0.95em; line-height: 1.4; } - -figure, pre { margin: 0; } - -li { margin: 0.25em 0; } - -img { max-width: 100%; height: auto; } - -hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #eeebee; border: 0; } - -blockquote { margin: 10px 0; margin-block-start: 0; margin-inline-start: 0; padding-left: 1rem; border-left: 3px solid #eeebee; } - -.side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #f5f6fa; } - -@media (min-width: 50rem) { .side-bar { flex-flow: column nowrap; position: fixed; width: 15.5rem; height: 100%; border-right: 1px solid #eeebee; align-items: flex-end; } } - -@media (min-width: 66.5rem) { .side-bar { width: calc((100% - 66.5rem) / 2 + 16.5rem); min-width: 16.5rem; } } - -@media (min-width: 50rem) { .side-bar + .main { margin-left: 15.5rem; } } - -@media (min-width: 66.5rem) { .side-bar + .main { margin-left: Max(16.5rem, calc((100% - 66.5rem) / 2 + 16.5rem)); } } - -.side-bar + .main .main-header { display: none; background-color: #f5f6fa; } - -@media (min-width: 50rem) { .side-bar + .main .main-header { display: flex; background-color: #fff; } } - -.side-bar + .main .main-header.nav-open { display: block; } - -@media (min-width: 50rem) { .side-bar + .main .main-header.nav-open { display: flex; } } - -.main { margin: auto; } - -@media (min-width: 50rem) { .main { position: relative; max-width: 50rem; } } - -.main-content-wrap { padding-top: 1rem; padding-bottom: 1rem; padding-right: 1rem; padding-left: 1rem; } - -@media (min-width: 50rem) { .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } - -@media (min-width: 50rem) { .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } - -.main-header { z-index: 0; border-bottom: 1px solid #eeebee; } - -@media (min-width: 50rem) { .main-header { display: flex; justify-content: space-between; height: 3.75rem; } } - -.site-nav, .site-header, .site-footer { width: 100%; } - -@media (min-width: 66.5rem) { .site-nav, .site-header, .site-footer { width: 16.5rem; } } - -.site-nav { display: none; } - -.site-nav.nav-open { display: block; } - -@media (min-width: 50rem) { .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } - -.site-header { display: flex; min-height: 3.75rem; align-items: center; } - -@media (min-width: 50rem) { .site-header { height: 3.75rem; max-height: 3.75rem; border-bottom: 1px solid #eeebee; } } - -.site-title { flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #27262b; padding-right: 1rem; padding-left: 1rem; } - -@media (min-width: 50rem) { .site-title { padding-right: 2rem; padding-left: 2rem; } } - -.site-title { font-size: 1.125rem !important; } - -@media (min-width: 31.25rem) { .site-title { font-size: 1.5rem !important; line-height: 1.25; } } - -@media (min-width: 50rem) { .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } - -.site-logo { width: 100%; height: 100%; background-image: url("/favicon.png"); background-repeat: no-repeat; background-position: left center; background-size: contain; } - -.site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } - -@media (min-width: 50rem) { .site-header .site-button { display: none; } } - -.site-title:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } - -.site-button:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } - -body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } - -@media (min-width: 50rem) { body { position: static; padding-bottom: 0; } } - -.site-footer { position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; padding-right: 1rem; padding-left: 1rem; } - -@media (min-width: 50rem) { .site-footer { padding-right: 2rem; padding-left: 2rem; } } - -.site-footer { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .site-footer { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) { .site-footer { position: static; justify-self: end; } } - -.icon { width: 1.5rem; height: 1.5rem; color: #7253ed; } - -.main-content { line-height: 1.6; } - -.main-content ol, .main-content ul, .main-content dl, .main-content pre, .main-content address, .main-content blockquote, .main-content .table-wrapper { margin-top: 0.5em; } - -.main-content a { overflow: hidden; text-overflow: ellipsis; } - -.main-content ul, .main-content ol { padding-left: 1.5em; } - -.main-content li .highlight { margin-top: 0.25rem; } - -.main-content ol { list-style-type: none; counter-reset: step-counter; } - -.main-content ol > li { position: relative; } - -.main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; } - -.main-content ol > li::before { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { .main-content ol > li::before { font-size: 0.875rem !important; } } - -@media (min-width: 31.25rem) { .main-content ol > li::before { top: 0.11em; } } - -.main-content ol > li ol { counter-reset: sub-counter; } - -.main-content ol > li ol > li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } - -.main-content ul { list-style: none; } - -.main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } - -.main-content .task-list-item::before { content: ""; } - -.main-content .task-list-item-checkbox { margin-right: 0.6em; margin-left: -1.4em; } - -.main-content hr + * { margin-top: 0; } - -.main-content h1:first-of-type { margin-top: 0.5em; } - -.main-content dl { display: grid; grid-template: auto / 10em 1fr; } - -.main-content dt, .main-content dd { margin: 0.25em 0; } - -.main-content dt { grid-column: 1; font-weight: 500; text-align: right; } - -.main-content dt::after { content: ":"; } - -.main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } - -.main-content dd blockquote:first-child, .main-content dd div:first-child, .main-content dd dl:first-child, .main-content dd dt:first-child, .main-content dd h1:first-child, .main-content dd h2:first-child, .main-content dd h3:first-child, .main-content dd h4:first-child, .main-content dd h5:first-child, .main-content dd h6:first-child, .main-content dd li:first-child, .main-content dd ol:first-child, .main-content dd p:first-child, .main-content dd pre:first-child, .main-content dd table:first-child, .main-content dd ul:first-child, .main-content dd .table-wrapper:first-child { margin-top: 0; } - -.main-content dd dl:first-child dt:first-child, .main-content dd dl:first-child dd:nth-child(2), .main-content ol dl:first-child dt:first-child, .main-content ol dl:first-child dd:nth-child(2), .main-content ul dl:first-child dt:first-child, .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } - -.main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } - -@media (min-width: 50rem) { .main-content .anchor-heading { right: auto; left: -1.5rem; } } - -.main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #7253ed; visibility: hidden; } - -.main-content .anchor-heading:hover svg, .main-content .anchor-heading:focus svg, .main-content h1:hover > .anchor-heading svg, .main-content h2:hover > .anchor-heading svg, .main-content h3:hover > .anchor-heading svg, .main-content h4:hover > .anchor-heading svg, .main-content h5:hover > .anchor-heading svg, .main-content h6:hover > .anchor-heading svg { visibility: visible; } - -.main-content summary { cursor: pointer; } - -.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6, .main-content #toctitle { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } - -.main-content h1 + table, .main-content h1 + .table-wrapper, .main-content h1 + .code-example, .main-content h1 + .highlighter-rouge, .main-content h1 + .sectionbody .listingblock, .main-content h2 + table, .main-content h2 + .table-wrapper, .main-content h2 + .code-example, .main-content h2 + .highlighter-rouge, .main-content h2 + .sectionbody .listingblock, .main-content h3 + table, .main-content h3 + .table-wrapper, .main-content h3 + .code-example, .main-content h3 + .highlighter-rouge, .main-content h3 + .sectionbody .listingblock, .main-content h4 + table, .main-content h4 + .table-wrapper, .main-content h4 + .code-example, .main-content h4 + .highlighter-rouge, .main-content h4 + .sectionbody .listingblock, .main-content h5 + table, .main-content h5 + .table-wrapper, .main-content h5 + .code-example, .main-content h5 + .highlighter-rouge, .main-content h5 + .sectionbody .listingblock, .main-content h6 + table, .main-content h6 + .table-wrapper, .main-content h6 + .code-example, .main-content h6 + .highlighter-rouge, .main-content h6 + .sectionbody .listingblock, .main-content #toctitle + table, .main-content #toctitle + .table-wrapper, .main-content #toctitle + .code-example, .main-content #toctitle + .highlighter-rouge, .main-content #toctitle + .sectionbody .listingblock { margin-top: 1em; } - -.main-content h1 + p:not(.label), .main-content h2 + p:not(.label), .main-content h3 + p:not(.label), .main-content h4 + p:not(.label), .main-content h5 + p:not(.label), .main-content h6 + p:not(.label), .main-content #toctitle + p:not(.label) { margin-top: 0; } - -.main-content > h1:first-child, .main-content > h2:first-child, .main-content > h3:first-child, .main-content > h4:first-child, .main-content > h5:first-child, .main-content > h6:first-child, .main-content > .sect1:first-child > h2, .main-content > .sect2:first-child > h3, .main-content > .sect3:first-child > h4, .main-content > .sect4:first-child > h5, .main-content > .sect5:first-child > h6 { margin-top: 0.5rem; } - -.nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } - -.nav-list .nav-list-item { position: relative; margin: 0; } - -.nav-list .nav-list-item { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 1rem !important; } } - -@media (min-width: 50rem) { .nav-list .nav-list-item { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) and (min-width: 31.25rem) { .nav-list .nav-list-item { font-size: 0.875rem !important; } } - -.nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } - -@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } - -.nav-list .nav-list-item .nav-list-link.external > svg { width: 1rem; height: 1rem; vertical-align: text-bottom; } - -.nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } - -.nav-list .nav-list-item .nav-list-link:hover, .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } - -.nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding: 0.75rem; color: #7253ed; } - -@media (min-width: 50rem) { .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding: 0.5rem; } } - -.nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 100%); } - -.nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } - -.nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } - -.nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } - -.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #5c5962; } - -.nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #5c5962; } - -.nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } - -.nav-list .nav-list-item.active > .nav-list { display: block; } - -.nav-category { padding: 0.5rem 1rem; font-weight: 600; text-align: start; text-transform: uppercase; border-bottom: 1px solid #eeebee; } - -.nav-category { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .nav-category { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) { .nav-category { padding: 0.5rem 2rem; margin-top: 1rem; text-align: start; } .nav-category:first-child { margin-top: 0; } } - -.nav-list.nav-category-list > .nav-list-item { margin: 0; } - -.nav-list.nav-category-list > .nav-list-item > .nav-list { padding: 0; } - -.nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link { color: #7253ed; } - -.nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-expander { color: #7253ed; } - -.aux-nav { height: 100%; overflow-x: auto; } - -.aux-nav { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .aux-nav { font-size: 0.75rem !important; } } - -.aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } - -.aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } - -@media (min-width: 50rem) { .aux-nav { padding-right: 1rem; } } - -@media (min-width: 50rem) { .breadcrumb-nav { margin-top: -1rem; } } - -.breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } - -.breadcrumb-nav-list-item { display: table-cell; } - -.breadcrumb-nav-list-item { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .breadcrumb-nav-list-item { font-size: 0.75rem !important; } } - -.breadcrumb-nav-list-item::before { display: none; } - -.breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } - -.breadcrumb-nav-list-item:last-child::after { content: ""; } - -h1, .text-alpha { font-weight: 300; } - -h1, .text-alpha { font-size: 2rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { h1, .text-alpha { font-size: 2.25rem !important; } } - -h2, .text-beta, #toctitle { font-size: 1.125rem !important; } - -@media (min-width: 31.25rem) { h2, .text-beta, #toctitle { font-size: 1.5rem !important; line-height: 1.25; } } - -h3, .text-gamma { font-size: 1rem !important; } - -@media (min-width: 31.25rem) { h3, .text-gamma { font-size: 1.125rem !important; } } - -h4, .text-delta { font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } - -h4, .text-delta { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { h4, .text-delta { font-size: 0.75rem !important; } } - -h4 code { text-transform: none; } - -h5, .text-epsilon { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { h5, .text-epsilon { font-size: 0.875rem !important; } } - -h6, .text-zeta { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { h6, .text-zeta { font-size: 0.75rem !important; } } - -.text-small { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .text-small { font-size: 0.75rem !important; } } - -.text-mono { font-family: "SFMono-Regular", menlo, consolas, monospace !important; } - -.text-left { text-align: left !important; } - -.text-center { text-align: center !important; } - -.text-right { text-align: right !important; } - -.label:not(g), .label-blue:not(g) { display: inline-block; padding: 0.16em 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; border-radius: 12px; } - -.label:not(g), .label-blue:not(g) { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .label:not(g), .label-blue:not(g) { font-size: 0.75rem !important; } } - -.label-green:not(g) { background-color: #009c7b; } - -.label-purple:not(g) { background-color: #5e41d0; } - -.label-red:not(g) { background-color: #e94c4c; } - -.label-yellow:not(g) { color: #44434d; background-color: #f7d12e; } - -.btn { display: inline-block; box-sizing: border-box; padding: 0.3em 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #7253ed; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #f7f7f7; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } - -.btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } - -.btn:focus:hover, .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } - -.btn:hover, .btn.zeroclipboard-is-hover { color: #6a4aec; } - -.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: #f4f4f4; } - -.btn:active, .btn.selected, .btn.zeroclipboard-is-active { background-color: #efefef; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -.btn.selected:hover { background-color: #cfcfcf; } - -.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } - -.btn-outline { color: #7253ed; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } - -.btn-outline:hover, .btn-outline:active, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: #6341eb; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } - -.btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } - -.btn-outline:focus:hover, .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } - -.btn-primary { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -.btn-primary:hover, .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } - -.btn-primary:active, .btn-primary.selected, .btn-primary.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -.btn-primary.selected:hover { background-color: #472cb2; } - -.btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -.btn-purple:hover, .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } - -.btn-purple:active, .btn-purple.selected, .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -.btn-purple.selected:hover { background-color: #472cb2; } - -.btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -.btn-blue:hover, .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } - -.btn-blue:active, .btn-blue.selected, .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -.btn-blue.selected:hover { background-color: #0669ed; } - -.btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -.btn-green:hover, .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } - -.btn-green:active, .btn-green.selected, .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -.btn-green.selected:hover { background-color: #0d8662; } - -.btn-reset { background: none; border: none; margin: 0; text-align: inherit; font: inherit; border-radius: 0; appearance: none; } - -.search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } - -@media (min-width: 50rem) { .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } - -.search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } - -@media (min-width: 50rem) { .search-input-wrap { position: absolute; width: 100%; max-width: 33.5rem; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } - -.search-input { position: absolute; width: 100%; height: 100%; padding: 0.5rem 1rem 0.5rem 2.5rem; font-size: 1rem; color: #5c5962; background-color: #fff; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } - -@media (min-width: 50rem) { .search-input { padding: 0.5rem 1rem 0.5rem 3.5rem; font-size: 0.875rem; background-color: #fff; transition: padding-left linear 200ms; } } - -.search-input:focus { outline: 0; } - -.search-input:focus + .search-label .search-icon { color: #7253ed; } - -.search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } - -@media (min-width: 50rem) { .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } - -.search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } - -.search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #fff; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } - -@media (min-width: 50rem) { .search-results { top: 100%; width: 33.5rem; max-height: calc(100vh - 200%) !important; } } - -.search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; } - -.search-results-list { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { .search-results-list { font-size: 1rem !important; } } - -@media (min-width: 50rem) { .search-results-list { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) and (min-width: 31.25rem) { .search-results-list { font-size: 0.875rem !important; } } - -.search-results-list-item { padding: 0; margin: 0; } - -.search-result { display: block; padding: 0.25rem 0.75rem; } - -.search-result:hover, .search-result.active { background-color: #ebedf5; } - -.search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } - -@media (min-width: 31.25rem) { .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } - -.search-result-doc { display: flex; align-items: center; word-wrap: break-word; } - -.search-result-doc.search-result-doc-parent { opacity: 0.5; } - -.search-result-doc.search-result-doc-parent { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 0.875rem !important; } } - -@media (min-width: 50rem) { .search-result-doc.search-result-doc-parent { font-size: 0.6875rem !important; } } - -@media (min-width: 50rem) and (min-width: 31.25rem) { .search-result-doc.search-result-doc-parent { font-size: 0.75rem !important; } } - -.search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #7253ed; flex-shrink: 0; } - -.search-result-doc .search-result-doc-title { overflow: auto; } - -.search-result-section { margin-left: 1.5rem; word-wrap: break-word; } - -.search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; } - -.search-result-rel-url { font-size: 0.5625rem !important; } - -@media (min-width: 31.25rem) { .search-result-rel-url { font-size: 0.625rem !important; } } - -.search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #eeebee; } - -.search-result-previews { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .search-result-previews { font-size: 0.75rem !important; } } - -@media (min-width: 31.25rem) { .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } - -.search-result-preview + .search-result-preview { margin-top: 0.25rem; } - -.search-result-highlight { font-weight: bold; } - -.search-no-result { padding: 0.5rem 0.75rem; } - -.search-no-result { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { .search-no-result { font-size: 0.875rem !important; } } - -.search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #fff; border: 1px solid rgba(114, 83, 237, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } - -.search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } - -.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } - -.search-active .search-input-wrap { height: 4rem; border-radius: 0; } - -@media (min-width: 50rem) { .search-active .search-input-wrap { width: 33.5rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } - -.search-active .search-input { background-color: #fff; } - -@media (min-width: 50rem) { .search-active .search-input { padding-left: 2.3rem; } } - -@media (min-width: 50rem) { .search-active .search-label { padding-left: 0.6rem; } } - -.search-active .search-results { display: block; } - -.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } - -@media (min-width: 50rem) { .search-active .main { position: fixed; right: 0; left: 0; } } - -.search-active .main-header { padding-top: 4rem; } - -@media (min-width: 50rem) { .search-active .main-header { padding-top: 0; } } - -.table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } - -table { display: table; min-width: 100%; border-collapse: separate; } - -th, td { min-width: 7.5rem; padding: 0.5rem 0.75rem; background-color: #fff; border-bottom: 1px solid rgba(238, 235, 238, 0.5); border-left: 1px solid #eeebee; } - -th, td { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { th, td { font-size: 0.875rem !important; } } - -th:first-of-type, td:first-of-type { border-left: 0; } - -tbody tr:last-of-type th, tbody tr:last-of-type td { border-bottom: 0; } - -tbody tr:last-of-type td { padding-bottom: 0.75rem; } - -thead th { border-bottom: 1px solid #eeebee; } - -:not(pre, figure) > code { padding: 0.15em 0.12em; font-weight: 400; background-color: #f5f6fa; border: 1px solid #eeebee; border-radius: 4px; } - -a:visited code { border-color: #eeebee; } - -div.highlighter-rouge, div.listingblock > div.content, figure.highlight { margin-top: 0; margin-bottom: 0.75rem; background-color: #f5f6fa; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; position: relative; padding: 0; } - -div.highlighter-rouge > button, div.listingblock > div.content > button, figure.highlight > button { width: 0.75rem; opacity: 0; position: absolute; top: 0; right: 0; border: 0.75rem solid #f5f6fa; background-color: #f5f6fa; color: #5c5962; box-sizing: content-box; } - -div.highlighter-rouge > button svg, div.listingblock > div.content > button svg, figure.highlight > button svg { fill: #5c5962; } - -div.highlighter-rouge > button:active, div.listingblock > div.content > button:active, figure.highlight > button:active { text-decoration: none; outline: none; opacity: 1; } - -div.highlighter-rouge > button:focus, div.listingblock > div.content > button:focus, figure.highlight > button:focus { opacity: 1; } - -div.highlighter-rouge:hover > button, div.listingblock > div.content:hover > button, figure.highlight:hover > button { cursor: copy; opacity: 1; } - -div.highlighter-rouge div.highlight { overflow-x: auto; padding: 0.75rem; margin: 0; border: 0; } - -div.highlighter-rouge pre.highlight, div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } - -div.listingblock { margin-top: 0; margin-bottom: 0.75rem; } - -div.listingblock div.content { overflow-x: auto; padding: 0.75rem; margin: 0; border: 0; } - -div.listingblock div.content > pre, div.listingblock code { padding: 0; margin: 0; border: 0; } - -figure.highlight pre, figure.highlight :not(pre) > code { overflow-x: auto; padding: 0.75rem; margin: 0; border: 0; } - -.highlight .table-wrapper { padding: 0.75rem 0; margin: 0; border: 0; box-shadow: none; } - -.highlight .table-wrapper td, .highlight .table-wrapper pre { min-width: 0; padding: 0; background-color: #f5f6fa; border: 0; } - -.highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .highlight .table-wrapper td, .highlight .table-wrapper pre { font-size: 0.75rem !important; } } - -.highlight .table-wrapper td.gl { width: 1em; padding-right: 0.75rem; padding-left: 0.75rem; } - -.highlight .table-wrapper pre { margin: 0; line-height: 2; } - -.code-example, .listingblock > .title { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #eeebee; border-radius: 4px; } - -.code-example + .highlighter-rouge, .code-example + .sectionbody .listingblock, .code-example + .content, .code-example + figure.highlight, .listingblock > .title + .highlighter-rouge, .listingblock > .title + .sectionbody .listingblock, .listingblock > .title + .content, .listingblock > .title + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #eeebee; border-bottom: 1px solid #eeebee; border-left: 1px solid #eeebee; border-top-left-radius: 0; border-top-right-radius: 0; } - -code.language-mermaid { padding: 0; background-color: inherit; border: 0; } - -.highlight, pre.highlight { background: #f5f6fa; color: #5c5962; } - -.highlight pre { background: #f5f6fa; } - -.text-grey-dk-000 { color: #959396 !important; } - -.text-grey-dk-100 { color: #5c5962 !important; } - -.text-grey-dk-200 { color: #44434d !important; } - -.text-grey-dk-250 { color: #302d36 !important; } - -.text-grey-dk-300 { color: #27262b !important; } - -.text-grey-lt-000 { color: #f5f6fa !important; } - -.text-grey-lt-100 { color: #eeebee !important; } - -.text-grey-lt-200 { color: #ecebed !important; } - -.text-grey-lt-300 { color: #e6e1e8 !important; } - -.text-blue-000 { color: #2c84fa !important; } - -.text-blue-100 { color: #2869e6 !important; } - -.text-blue-200 { color: #264caf !important; } - -.text-blue-300 { color: #183385 !important; } - -.text-green-000 { color: #41d693 !important; } - -.text-green-100 { color: #11b584 !important; } - -.text-green-200 { color: #009c7b !important; } - -.text-green-300 { color: #026e57 !important; } - -.text-purple-000 { color: #7253ed !important; } - -.text-purple-100 { color: #5e41d0 !important; } - -.text-purple-200 { color: #4e26af !important; } - -.text-purple-300 { color: #381885 !important; } - -.text-yellow-000 { color: #ffeb82 !important; } - -.text-yellow-100 { color: #fadf50 !important; } - -.text-yellow-200 { color: #f7d12e !important; } - -.text-yellow-300 { color: #e7af06 !important; } - -.text-red-000 { color: #f77e7e !important; } - -.text-red-100 { color: #f96e65 !important; } - -.text-red-200 { color: #e94c4c !important; } - -.text-red-300 { color: #dd2e2e !important; } - -.bg-grey-dk-000 { background-color: #959396 !important; } - -.bg-grey-dk-100 { background-color: #5c5962 !important; } - -.bg-grey-dk-200 { background-color: #44434d !important; } - -.bg-grey-dk-250 { background-color: #302d36 !important; } - -.bg-grey-dk-300 { background-color: #27262b !important; } - -.bg-grey-lt-000 { background-color: #f5f6fa !important; } - -.bg-grey-lt-100 { background-color: #eeebee !important; } - -.bg-grey-lt-200 { background-color: #ecebed !important; } - -.bg-grey-lt-300 { background-color: #e6e1e8 !important; } - -.bg-blue-000 { background-color: #2c84fa !important; } - -.bg-blue-100 { background-color: #2869e6 !important; } - -.bg-blue-200 { background-color: #264caf !important; } - -.bg-blue-300 { background-color: #183385 !important; } - -.bg-green-000 { background-color: #41d693 !important; } - -.bg-green-100 { background-color: #11b584 !important; } - -.bg-green-200 { background-color: #009c7b !important; } - -.bg-green-300 { background-color: #026e57 !important; } - -.bg-purple-000 { background-color: #7253ed !important; } - -.bg-purple-100 { background-color: #5e41d0 !important; } - -.bg-purple-200 { background-color: #4e26af !important; } - -.bg-purple-300 { background-color: #381885 !important; } - -.bg-yellow-000 { background-color: #ffeb82 !important; } - -.bg-yellow-100 { background-color: #fadf50 !important; } - -.bg-yellow-200 { background-color: #f7d12e !important; } - -.bg-yellow-300 { background-color: #e7af06 !important; } - -.bg-red-000 { background-color: #f77e7e !important; } - -.bg-red-100 { background-color: #f96e65 !important; } - -.bg-red-200 { background-color: #e94c4c !important; } - -.bg-red-300 { background-color: #dd2e2e !important; } - -.d-block { display: block !important; } - -.d-flex { display: flex !important; } - -.d-inline { display: inline !important; } - -.d-inline-block { display: inline-block !important; } - -.d-none { display: none !important; } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { .d-xs-block { display: block !important; } .d-xs-flex { display: flex !important; } .d-xs-inline { display: inline !important; } .d-xs-inline-block { display: inline-block !important; } .d-xs-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { .d-sm-block { display: block !important; } .d-sm-flex { display: flex !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { .d-md-block { display: block !important; } .d-md-flex { display: flex !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { .d-lg-block { display: block !important; } .d-lg-flex { display: flex !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { .d-xl-block { display: block !important; } .d-xl-flex { display: flex !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-none { display: none !important; } } - -.float-left { float: left !important; } - -.float-right { float: right !important; } - -.flex-justify-start { justify-content: flex-start !important; } - -.flex-justify-end { justify-content: flex-end !important; } - -.flex-justify-between { justify-content: space-between !important; } - -.flex-justify-around { justify-content: space-around !important; } - -.v-align-baseline { vertical-align: baseline !important; } - -.v-align-bottom { vertical-align: bottom !important; } - -.v-align-middle { vertical-align: middle !important; } - -.v-align-text-bottom { vertical-align: text-bottom !important; } - -.v-align-text-top { vertical-align: text-top !important; } - -.v-align-top { vertical-align: top !important; } - -.fs-1 { font-size: 0.5625rem !important; } - -@media (min-width: 31.25rem) { .fs-1 { font-size: 0.625rem !important; } } - -.fs-2 { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { .fs-2 { font-size: 0.75rem !important; } } - -.fs-3 { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { .fs-3 { font-size: 0.875rem !important; } } - -.fs-4 { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { .fs-4 { font-size: 1rem !important; } } - -.fs-5 { font-size: 1rem !important; } - -@media (min-width: 31.25rem) { .fs-5 { font-size: 1.125rem !important; } } - -.fs-6 { font-size: 1.125rem !important; } - -@media (min-width: 31.25rem) { .fs-6 { font-size: 1.5rem !important; line-height: 1.25; } } - -.fs-7 { font-size: 1.5rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { .fs-7 { font-size: 2rem !important; } } - -.fs-8 { font-size: 2rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { .fs-8 { font-size: 2.25rem !important; } } - -.fs-9 { font-size: 2.25rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { .fs-9 { font-size: 2.625rem !important; } } - -.fs-10 { font-size: 2.625rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { .fs-10 { font-size: 3rem !important; } } - -.fw-300 { font-weight: 300 !important; } - -.fw-400 { font-weight: 400 !important; } - -.fw-500 { font-weight: 500 !important; } - -.fw-700 { font-weight: 700 !important; } - -.lh-0 { line-height: 0 !important; } - -.lh-default { line-height: 1.4; } - -.lh-tight { line-height: 1.25; } - -.ls-5 { letter-spacing: 0.05em !important; } - -.ls-10 { letter-spacing: 0.1em !important; } - -.ls-0 { letter-spacing: 0 !important; } - -.text-uppercase { text-transform: uppercase !important; } - -.list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } - -.list-style-none li::before { display: none !important; } - -.mx-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-0 { margin: 0 !important; } - -.mt-0 { margin-top: 0 !important; } - -.mr-0 { margin-right: 0 !important; } - -.mb-0 { margin-bottom: 0 !important; } - -.ml-0 { margin-left: 0 !important; } - -.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } - -.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } - -.mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } - -.mx-0-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-1 { margin: 0.25rem !important; } - -.mt-1 { margin-top: 0.25rem !important; } - -.mr-1 { margin-right: 0.25rem !important; } - -.mb-1 { margin-bottom: 0.25rem !important; } - -.ml-1 { margin-left: 0.25rem !important; } - -.mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } - -.my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } - -.mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } - -.mx-1-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-2 { margin: 0.5rem !important; } - -.mt-2 { margin-top: 0.5rem !important; } - -.mr-2 { margin-right: 0.5rem !important; } - -.mb-2 { margin-bottom: 0.5rem !important; } - -.ml-2 { margin-left: 0.5rem !important; } - -.mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } - -.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } - -.mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } - -.mx-2-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-3 { margin: 0.75rem !important; } - -.mt-3 { margin-top: 0.75rem !important; } - -.mr-3 { margin-right: 0.75rem !important; } - -.mb-3 { margin-bottom: 0.75rem !important; } - -.ml-3 { margin-left: 0.75rem !important; } - -.mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } - -.my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } - -.mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } - -.mx-3-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-4 { margin: 1rem !important; } - -.mt-4 { margin-top: 1rem !important; } - -.mr-4 { margin-right: 1rem !important; } - -.mb-4 { margin-bottom: 1rem !important; } - -.ml-4 { margin-left: 1rem !important; } - -.mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } - -.my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } - -.mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } - -.mx-4-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-5 { margin: 1.5rem !important; } - -.mt-5 { margin-top: 1.5rem !important; } - -.mr-5 { margin-right: 1.5rem !important; } - -.mb-5 { margin-bottom: 1.5rem !important; } - -.ml-5 { margin-left: 1.5rem !important; } - -.mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } - -.my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } - -.mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } - -.mx-5-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-6 { margin: 2rem !important; } - -.mt-6 { margin-top: 2rem !important; } - -.mr-6 { margin-right: 2rem !important; } - -.mb-6 { margin-bottom: 2rem !important; } - -.ml-6 { margin-left: 2rem !important; } - -.mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } - -.my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } - -.mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } - -.mx-6-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-7 { margin: 2.5rem !important; } - -.mt-7 { margin-top: 2.5rem !important; } - -.mr-7 { margin-right: 2.5rem !important; } - -.mb-7 { margin-bottom: 2.5rem !important; } - -.ml-7 { margin-left: 2.5rem !important; } - -.mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } - -.my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } - -.mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } - -.mx-7-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-8 { margin: 3rem !important; } - -.mt-8 { margin-top: 3rem !important; } - -.mr-8 { margin-right: 3rem !important; } - -.mb-8 { margin-bottom: 3rem !important; } - -.ml-8 { margin-left: 3rem !important; } - -.mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } - -.my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } - -.mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } - -.mx-8-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-9 { margin: 3.5rem !important; } - -.mt-9 { margin-top: 3.5rem !important; } - -.mr-9 { margin-right: 3.5rem !important; } - -.mb-9 { margin-bottom: 3.5rem !important; } - -.ml-9 { margin-left: 3.5rem !important; } - -.mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } - -.my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } - -.mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } - -.mx-9-auto { margin-right: auto !important; margin-left: auto !important; } - -.m-10 { margin: 4rem !important; } - -.mt-10 { margin-top: 4rem !important; } - -.mr-10 { margin-right: 4rem !important; } - -.mb-10 { margin-bottom: 4rem !important; } - -.ml-10 { margin-left: 4rem !important; } - -.mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } - -.my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } - -.mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } - -.mx-10-auto { margin-right: auto !important; margin-left: auto !important; } - -@media (min-width: 20rem) { .m-xs-0 { margin: 0 !important; } .mt-xs-0 { margin-top: 0 !important; } .mr-xs-0 { margin-right: 0 !important; } .mb-xs-0 { margin-bottom: 0 !important; } .ml-xs-0 { margin-left: 0 !important; } .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 20rem) { .m-xs-1 { margin: 0.25rem !important; } .mt-xs-1 { margin-top: 0.25rem !important; } .mr-xs-1 { margin-right: 0.25rem !important; } .mb-xs-1 { margin-bottom: 0.25rem !important; } .ml-xs-1 { margin-left: 0.25rem !important; } .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 20rem) { .m-xs-2 { margin: 0.5rem !important; } .mt-xs-2 { margin-top: 0.5rem !important; } .mr-xs-2 { margin-right: 0.5rem !important; } .mb-xs-2 { margin-bottom: 0.5rem !important; } .ml-xs-2 { margin-left: 0.5rem !important; } .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 20rem) { .m-xs-3 { margin: 0.75rem !important; } .mt-xs-3 { margin-top: 0.75rem !important; } .mr-xs-3 { margin-right: 0.75rem !important; } .mb-xs-3 { margin-bottom: 0.75rem !important; } .ml-xs-3 { margin-left: 0.75rem !important; } .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 20rem) { .m-xs-4 { margin: 1rem !important; } .mt-xs-4 { margin-top: 1rem !important; } .mr-xs-4 { margin-right: 1rem !important; } .mb-xs-4 { margin-bottom: 1rem !important; } .ml-xs-4 { margin-left: 1rem !important; } .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 20rem) { .m-xs-5 { margin: 1.5rem !important; } .mt-xs-5 { margin-top: 1.5rem !important; } .mr-xs-5 { margin-right: 1.5rem !important; } .mb-xs-5 { margin-bottom: 1.5rem !important; } .ml-xs-5 { margin-left: 1.5rem !important; } .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 20rem) { .m-xs-6 { margin: 2rem !important; } .mt-xs-6 { margin-top: 2rem !important; } .mr-xs-6 { margin-right: 2rem !important; } .mb-xs-6 { margin-bottom: 2rem !important; } .ml-xs-6 { margin-left: 2rem !important; } .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 20rem) { .m-xs-7 { margin: 2.5rem !important; } .mt-xs-7 { margin-top: 2.5rem !important; } .mr-xs-7 { margin-right: 2.5rem !important; } .mb-xs-7 { margin-bottom: 2.5rem !important; } .ml-xs-7 { margin-left: 2.5rem !important; } .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 20rem) { .m-xs-8 { margin: 3rem !important; } .mt-xs-8 { margin-top: 3rem !important; } .mr-xs-8 { margin-right: 3rem !important; } .mb-xs-8 { margin-bottom: 3rem !important; } .ml-xs-8 { margin-left: 3rem !important; } .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 20rem) { .m-xs-9 { margin: 3.5rem !important; } .mt-xs-9 { margin-top: 3.5rem !important; } .mr-xs-9 { margin-right: 3.5rem !important; } .mb-xs-9 { margin-bottom: 3.5rem !important; } .ml-xs-9 { margin-left: 3.5rem !important; } .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 20rem) { .m-xs-10 { margin: 4rem !important; } .mt-xs-10 { margin-top: 4rem !important; } .mr-xs-10 { margin-right: 4rem !important; } .mb-xs-10 { margin-bottom: 4rem !important; } .ml-xs-10 { margin-left: 4rem !important; } .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-0 { margin: 0 !important; } .mt-sm-0 { margin-top: 0 !important; } .mr-sm-0 { margin-right: 0 !important; } .mb-sm-0 { margin-bottom: 0 !important; } .ml-sm-0 { margin-left: 0 !important; } .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 31.25rem) { .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1 { margin-left: 0.25rem !important; } .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2 { margin-left: 0.5rem !important; } .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-3 { margin: 0.75rem !important; } .mt-sm-3 { margin-top: 0.75rem !important; } .mr-sm-3 { margin-right: 0.75rem !important; } .mb-sm-3 { margin-bottom: 0.75rem !important; } .ml-sm-3 { margin-left: 0.75rem !important; } .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-4 { margin: 1rem !important; } .mt-sm-4 { margin-top: 1rem !important; } .mr-sm-4 { margin-right: 1rem !important; } .mb-sm-4 { margin-bottom: 1rem !important; } .ml-sm-4 { margin-left: 1rem !important; } .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-5 { margin: 1.5rem !important; } .mt-sm-5 { margin-top: 1.5rem !important; } .mr-sm-5 { margin-right: 1.5rem !important; } .mb-sm-5 { margin-bottom: 1.5rem !important; } .ml-sm-5 { margin-left: 1.5rem !important; } .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-6 { margin: 2rem !important; } .mt-sm-6 { margin-top: 2rem !important; } .mr-sm-6 { margin-right: 2rem !important; } .mb-sm-6 { margin-bottom: 2rem !important; } .ml-sm-6 { margin-left: 2rem !important; } .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-7 { margin: 2.5rem !important; } .mt-sm-7 { margin-top: 2.5rem !important; } .mr-sm-7 { margin-right: 2.5rem !important; } .mb-sm-7 { margin-bottom: 2.5rem !important; } .ml-sm-7 { margin-left: 2.5rem !important; } .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-8 { margin: 3rem !important; } .mt-sm-8 { margin-top: 3rem !important; } .mr-sm-8 { margin-right: 3rem !important; } .mb-sm-8 { margin-bottom: 3rem !important; } .ml-sm-8 { margin-left: 3rem !important; } .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-9 { margin: 3.5rem !important; } .mt-sm-9 { margin-top: 3.5rem !important; } .mr-sm-9 { margin-right: 3.5rem !important; } .mb-sm-9 { margin-bottom: 3.5rem !important; } .ml-sm-9 { margin-left: 3.5rem !important; } .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 31.25rem) { .m-sm-10 { margin: 4rem !important; } .mt-sm-10 { margin-top: 4rem !important; } .mr-sm-10 { margin-right: 4rem !important; } .mb-sm-10 { margin-bottom: 4rem !important; } .ml-sm-10 { margin-left: 4rem !important; } .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 50rem) { .m-md-0 { margin: 0 !important; } .mt-md-0 { margin-top: 0 !important; } .mr-md-0 { margin-right: 0 !important; } .mb-md-0 { margin-bottom: 0 !important; } .ml-md-0 { margin-left: 0 !important; } .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 50rem) { .m-md-1 { margin: 0.25rem !important; } .mt-md-1 { margin-top: 0.25rem !important; } .mr-md-1 { margin-right: 0.25rem !important; } .mb-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1 { margin-left: 0.25rem !important; } .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 50rem) { .m-md-2 { margin: 0.5rem !important; } .mt-md-2 { margin-top: 0.5rem !important; } .mr-md-2 { margin-right: 0.5rem !important; } .mb-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2 { margin-left: 0.5rem !important; } .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 50rem) { .m-md-3 { margin: 0.75rem !important; } .mt-md-3 { margin-top: 0.75rem !important; } .mr-md-3 { margin-right: 0.75rem !important; } .mb-md-3 { margin-bottom: 0.75rem !important; } .ml-md-3 { margin-left: 0.75rem !important; } .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 50rem) { .m-md-4 { margin: 1rem !important; } .mt-md-4 { margin-top: 1rem !important; } .mr-md-4 { margin-right: 1rem !important; } .mb-md-4 { margin-bottom: 1rem !important; } .ml-md-4 { margin-left: 1rem !important; } .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 50rem) { .m-md-5 { margin: 1.5rem !important; } .mt-md-5 { margin-top: 1.5rem !important; } .mr-md-5 { margin-right: 1.5rem !important; } .mb-md-5 { margin-bottom: 1.5rem !important; } .ml-md-5 { margin-left: 1.5rem !important; } .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 50rem) { .m-md-6 { margin: 2rem !important; } .mt-md-6 { margin-top: 2rem !important; } .mr-md-6 { margin-right: 2rem !important; } .mb-md-6 { margin-bottom: 2rem !important; } .ml-md-6 { margin-left: 2rem !important; } .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 50rem) { .m-md-7 { margin: 2.5rem !important; } .mt-md-7 { margin-top: 2.5rem !important; } .mr-md-7 { margin-right: 2.5rem !important; } .mb-md-7 { margin-bottom: 2.5rem !important; } .ml-md-7 { margin-left: 2.5rem !important; } .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 50rem) { .m-md-8 { margin: 3rem !important; } .mt-md-8 { margin-top: 3rem !important; } .mr-md-8 { margin-right: 3rem !important; } .mb-md-8 { margin-bottom: 3rem !important; } .ml-md-8 { margin-left: 3rem !important; } .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 50rem) { .m-md-9 { margin: 3.5rem !important; } .mt-md-9 { margin-top: 3.5rem !important; } .mr-md-9 { margin-right: 3.5rem !important; } .mb-md-9 { margin-bottom: 3.5rem !important; } .ml-md-9 { margin-left: 3.5rem !important; } .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 50rem) { .m-md-10 { margin: 4rem !important; } .mt-md-10 { margin-top: 4rem !important; } .mr-md-10 { margin-right: 4rem !important; } .mb-md-10 { margin-bottom: 4rem !important; } .ml-md-10 { margin-left: 4rem !important; } .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-0 { margin: 0 !important; } .mt-lg-0 { margin-top: 0 !important; } .mr-lg-0 { margin-right: 0 !important; } .mb-lg-0 { margin-bottom: 0 !important; } .ml-lg-0 { margin-left: 0 !important; } .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 66.5rem) { .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1 { margin-left: 0.25rem !important; } .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2 { margin-left: 0.5rem !important; } .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-3 { margin: 0.75rem !important; } .mt-lg-3 { margin-top: 0.75rem !important; } .mr-lg-3 { margin-right: 0.75rem !important; } .mb-lg-3 { margin-bottom: 0.75rem !important; } .ml-lg-3 { margin-left: 0.75rem !important; } .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-4 { margin: 1rem !important; } .mt-lg-4 { margin-top: 1rem !important; } .mr-lg-4 { margin-right: 1rem !important; } .mb-lg-4 { margin-bottom: 1rem !important; } .ml-lg-4 { margin-left: 1rem !important; } .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-5 { margin: 1.5rem !important; } .mt-lg-5 { margin-top: 1.5rem !important; } .mr-lg-5 { margin-right: 1.5rem !important; } .mb-lg-5 { margin-bottom: 1.5rem !important; } .ml-lg-5 { margin-left: 1.5rem !important; } .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-6 { margin: 2rem !important; } .mt-lg-6 { margin-top: 2rem !important; } .mr-lg-6 { margin-right: 2rem !important; } .mb-lg-6 { margin-bottom: 2rem !important; } .ml-lg-6 { margin-left: 2rem !important; } .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-7 { margin: 2.5rem !important; } .mt-lg-7 { margin-top: 2.5rem !important; } .mr-lg-7 { margin-right: 2.5rem !important; } .mb-lg-7 { margin-bottom: 2.5rem !important; } .ml-lg-7 { margin-left: 2.5rem !important; } .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-8 { margin: 3rem !important; } .mt-lg-8 { margin-top: 3rem !important; } .mr-lg-8 { margin-right: 3rem !important; } .mb-lg-8 { margin-bottom: 3rem !important; } .ml-lg-8 { margin-left: 3rem !important; } .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-9 { margin: 3.5rem !important; } .mt-lg-9 { margin-top: 3.5rem !important; } .mr-lg-9 { margin-right: 3.5rem !important; } .mb-lg-9 { margin-bottom: 3.5rem !important; } .ml-lg-9 { margin-left: 3.5rem !important; } .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 66.5rem) { .m-lg-10 { margin: 4rem !important; } .mt-lg-10 { margin-top: 4rem !important; } .mr-lg-10 { margin-right: 4rem !important; } .mb-lg-10 { margin-bottom: 4rem !important; } .ml-lg-10 { margin-left: 4rem !important; } .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-0 { margin: 0 !important; } .mt-xl-0 { margin-top: 0 !important; } .mr-xl-0 { margin-right: 0 !important; } .mb-xl-0 { margin-bottom: 0 !important; } .ml-xl-0 { margin-left: 0 !important; } .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 87.5rem) { .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1 { margin-left: 0.25rem !important; } .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2 { margin-left: 0.5rem !important; } .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-3 { margin: 0.75rem !important; } .mt-xl-3 { margin-top: 0.75rem !important; } .mr-xl-3 { margin-right: 0.75rem !important; } .mb-xl-3 { margin-bottom: 0.75rem !important; } .ml-xl-3 { margin-left: 0.75rem !important; } .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-4 { margin: 1rem !important; } .mt-xl-4 { margin-top: 1rem !important; } .mr-xl-4 { margin-right: 1rem !important; } .mb-xl-4 { margin-bottom: 1rem !important; } .ml-xl-4 { margin-left: 1rem !important; } .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-5 { margin: 1.5rem !important; } .mt-xl-5 { margin-top: 1.5rem !important; } .mr-xl-5 { margin-right: 1.5rem !important; } .mb-xl-5 { margin-bottom: 1.5rem !important; } .ml-xl-5 { margin-left: 1.5rem !important; } .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-6 { margin: 2rem !important; } .mt-xl-6 { margin-top: 2rem !important; } .mr-xl-6 { margin-right: 2rem !important; } .mb-xl-6 { margin-bottom: 2rem !important; } .ml-xl-6 { margin-left: 2rem !important; } .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-7 { margin: 2.5rem !important; } .mt-xl-7 { margin-top: 2.5rem !important; } .mr-xl-7 { margin-right: 2.5rem !important; } .mb-xl-7 { margin-bottom: 2.5rem !important; } .ml-xl-7 { margin-left: 2.5rem !important; } .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-8 { margin: 3rem !important; } .mt-xl-8 { margin-top: 3rem !important; } .mr-xl-8 { margin-right: 3rem !important; } .mb-xl-8 { margin-bottom: 3rem !important; } .ml-xl-8 { margin-left: 3rem !important; } .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-9 { margin: 3.5rem !important; } .mt-xl-9 { margin-top: 3.5rem !important; } .mr-xl-9 { margin-right: 3.5rem !important; } .mb-xl-9 { margin-bottom: 3.5rem !important; } .ml-xl-9 { margin-left: 3.5rem !important; } .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 87.5rem) { .m-xl-10 { margin: 4rem !important; } .mt-xl-10 { margin-top: 4rem !important; } .mr-xl-10 { margin-right: 4rem !important; } .mb-xl-10 { margin-bottom: 4rem !important; } .ml-xl-10 { margin-left: 4rem !important; } .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -.p-0 { padding: 0 !important; } - -.pt-0 { padding-top: 0 !important; } - -.pr-0 { padding-right: 0 !important; } - -.pb-0 { padding-bottom: 0 !important; } - -.pl-0 { padding-left: 0 !important; } - -.px-0 { padding-right: 0 !important; padding-left: 0 !important; } - -.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } - -.p-1 { padding: 0.25rem !important; } - -.pt-1 { padding-top: 0.25rem !important; } - -.pr-1 { padding-right: 0.25rem !important; } - -.pb-1 { padding-bottom: 0.25rem !important; } - -.pl-1 { padding-left: 0.25rem !important; } - -.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } - -.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } - -.p-2 { padding: 0.5rem !important; } - -.pt-2 { padding-top: 0.5rem !important; } - -.pr-2 { padding-right: 0.5rem !important; } - -.pb-2 { padding-bottom: 0.5rem !important; } - -.pl-2 { padding-left: 0.5rem !important; } - -.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } - -.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } - -.p-3 { padding: 0.75rem !important; } - -.pt-3 { padding-top: 0.75rem !important; } - -.pr-3 { padding-right: 0.75rem !important; } - -.pb-3 { padding-bottom: 0.75rem !important; } - -.pl-3 { padding-left: 0.75rem !important; } - -.px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } - -.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } - -.p-4 { padding: 1rem !important; } - -.pt-4 { padding-top: 1rem !important; } - -.pr-4 { padding-right: 1rem !important; } - -.pb-4 { padding-bottom: 1rem !important; } - -.pl-4 { padding-left: 1rem !important; } - -.px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } - -.py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } - -.p-5 { padding: 1.5rem !important; } - -.pt-5 { padding-top: 1.5rem !important; } - -.pr-5 { padding-right: 1.5rem !important; } - -.pb-5 { padding-bottom: 1.5rem !important; } - -.pl-5 { padding-left: 1.5rem !important; } - -.px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } - -.py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } - -.p-6 { padding: 2rem !important; } - -.pt-6 { padding-top: 2rem !important; } - -.pr-6 { padding-right: 2rem !important; } - -.pb-6 { padding-bottom: 2rem !important; } - -.pl-6 { padding-left: 2rem !important; } - -.px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } - -.py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } - -.p-7 { padding: 2.5rem !important; } - -.pt-7 { padding-top: 2.5rem !important; } - -.pr-7 { padding-right: 2.5rem !important; } - -.pb-7 { padding-bottom: 2.5rem !important; } - -.pl-7 { padding-left: 2.5rem !important; } - -.px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } - -.py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } - -.p-8 { padding: 3rem !important; } - -.pt-8 { padding-top: 3rem !important; } - -.pr-8 { padding-right: 3rem !important; } - -.pb-8 { padding-bottom: 3rem !important; } - -.pl-8 { padding-left: 3rem !important; } - -.px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } - -.py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } - -.p-9 { padding: 3.5rem !important; } - -.pt-9 { padding-top: 3.5rem !important; } - -.pr-9 { padding-right: 3.5rem !important; } - -.pb-9 { padding-bottom: 3.5rem !important; } - -.pl-9 { padding-left: 3.5rem !important; } - -.px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } - -.py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } - -.p-10 { padding: 4rem !important; } - -.pt-10 { padding-top: 4rem !important; } - -.pr-10 { padding-right: 4rem !important; } - -.pb-10 { padding-bottom: 4rem !important; } - -.pl-10 { padding-left: 4rem !important; } - -.px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } - -.py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } - -@media (min-width: 20rem) { .p-xs-0 { padding: 0 !important; } .pt-xs-0 { padding-top: 0 !important; } .pr-xs-0 { padding-right: 0 !important; } .pb-xs-0 { padding-bottom: 0 !important; } .pl-xs-0 { padding-left: 0 !important; } .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xs-1 { padding: 0.25rem !important; } .pt-xs-1 { padding-top: 0.25rem !important; } .pr-xs-1 { padding-right: 0.25rem !important; } .pb-xs-1 { padding-bottom: 0.25rem !important; } .pl-xs-1 { padding-left: 0.25rem !important; } .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xs-2 { padding: 0.5rem !important; } .pt-xs-2 { padding-top: 0.5rem !important; } .pr-xs-2 { padding-right: 0.5rem !important; } .pb-xs-2 { padding-bottom: 0.5rem !important; } .pl-xs-2 { padding-left: 0.5rem !important; } .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xs-3 { padding: 0.75rem !important; } .pt-xs-3 { padding-top: 0.75rem !important; } .pr-xs-3 { padding-right: 0.75rem !important; } .pb-xs-3 { padding-bottom: 0.75rem !important; } .pl-xs-3 { padding-left: 0.75rem !important; } .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xs-4 { padding: 1rem !important; } .pt-xs-4 { padding-top: 1rem !important; } .pr-xs-4 { padding-right: 1rem !important; } .pb-xs-4 { padding-bottom: 1rem !important; } .pl-xs-4 { padding-left: 1rem !important; } .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xs-5 { padding: 1.5rem !important; } .pt-xs-5 { padding-top: 1.5rem !important; } .pr-xs-5 { padding-right: 1.5rem !important; } .pb-xs-5 { padding-bottom: 1.5rem !important; } .pl-xs-5 { padding-left: 1.5rem !important; } .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xs-6 { padding: 2rem !important; } .pt-xs-6 { padding-top: 2rem !important; } .pr-xs-6 { padding-right: 2rem !important; } .pb-xs-6 { padding-bottom: 2rem !important; } .pl-xs-6 { padding-left: 2rem !important; } .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xs-7 { padding: 2.5rem !important; } .pt-xs-7 { padding-top: 2.5rem !important; } .pr-xs-7 { padding-right: 2.5rem !important; } .pb-xs-7 { padding-bottom: 2.5rem !important; } .pl-xs-7 { padding-left: 2.5rem !important; } .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xs-8 { padding: 3rem !important; } .pt-xs-8 { padding-top: 3rem !important; } .pr-xs-8 { padding-right: 3rem !important; } .pb-xs-8 { padding-bottom: 3rem !important; } .pl-xs-8 { padding-left: 3rem !important; } .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xs-9 { padding: 3.5rem !important; } .pt-xs-9 { padding-top: 3.5rem !important; } .pr-xs-9 { padding-right: 3.5rem !important; } .pb-xs-9 { padding-bottom: 3.5rem !important; } .pl-xs-9 { padding-left: 3.5rem !important; } .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xs-10 { padding: 4rem !important; } .pt-xs-10 { padding-top: 4rem !important; } .pr-xs-10 { padding-right: 4rem !important; } .pb-xs-10 { padding-bottom: 4rem !important; } .pl-xs-10 { padding-left: 4rem !important; } .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 31.25rem) { .p-sm-0 { padding: 0 !important; } .pt-sm-0 { padding-top: 0 !important; } .pr-sm-0 { padding-right: 0 !important; } .pb-sm-0 { padding-bottom: 0 !important; } .pl-sm-0 { padding-left: 0 !important; } .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1 { padding-left: 0.25rem !important; } .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2 { padding-left: 0.5rem !important; } .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-sm-3 { padding: 0.75rem !important; } .pt-sm-3 { padding-top: 0.75rem !important; } .pr-sm-3 { padding-right: 0.75rem !important; } .pb-sm-3 { padding-bottom: 0.75rem !important; } .pl-sm-3 { padding-left: 0.75rem !important; } .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-sm-4 { padding: 1rem !important; } .pt-sm-4 { padding-top: 1rem !important; } .pr-sm-4 { padding-right: 1rem !important; } .pb-sm-4 { padding-bottom: 1rem !important; } .pl-sm-4 { padding-left: 1rem !important; } .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-sm-5 { padding: 1.5rem !important; } .pt-sm-5 { padding-top: 1.5rem !important; } .pr-sm-5 { padding-right: 1.5rem !important; } .pb-sm-5 { padding-bottom: 1.5rem !important; } .pl-sm-5 { padding-left: 1.5rem !important; } .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-sm-6 { padding: 2rem !important; } .pt-sm-6 { padding-top: 2rem !important; } .pr-sm-6 { padding-right: 2rem !important; } .pb-sm-6 { padding-bottom: 2rem !important; } .pl-sm-6 { padding-left: 2rem !important; } .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-sm-7 { padding: 2.5rem !important; } .pt-sm-7 { padding-top: 2.5rem !important; } .pr-sm-7 { padding-right: 2.5rem !important; } .pb-sm-7 { padding-bottom: 2.5rem !important; } .pl-sm-7 { padding-left: 2.5rem !important; } .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-sm-8 { padding: 3rem !important; } .pt-sm-8 { padding-top: 3rem !important; } .pr-sm-8 { padding-right: 3rem !important; } .pb-sm-8 { padding-bottom: 3rem !important; } .pl-sm-8 { padding-left: 3rem !important; } .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-sm-9 { padding: 3.5rem !important; } .pt-sm-9 { padding-top: 3.5rem !important; } .pr-sm-9 { padding-right: 3.5rem !important; } .pb-sm-9 { padding-bottom: 3.5rem !important; } .pl-sm-9 { padding-left: 3.5rem !important; } .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-sm-10 { padding: 4rem !important; } .pt-sm-10 { padding-top: 4rem !important; } .pr-sm-10 { padding-right: 4rem !important; } .pb-sm-10 { padding-bottom: 4rem !important; } .pl-sm-10 { padding-left: 4rem !important; } .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 50rem) { .p-md-0 { padding: 0 !important; } .pt-md-0 { padding-top: 0 !important; } .pr-md-0 { padding-right: 0 !important; } .pb-md-0 { padding-bottom: 0 !important; } .pl-md-0 { padding-left: 0 !important; } .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1 { padding-top: 0.25rem !important; } .pr-md-1 { padding-right: 0.25rem !important; } .pb-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1 { padding-left: 0.25rem !important; } .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2 { padding-top: 0.5rem !important; } .pr-md-2 { padding-right: 0.5rem !important; } .pb-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2 { padding-left: 0.5rem !important; } .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-md-3 { padding: 0.75rem !important; } .pt-md-3 { padding-top: 0.75rem !important; } .pr-md-3 { padding-right: 0.75rem !important; } .pb-md-3 { padding-bottom: 0.75rem !important; } .pl-md-3 { padding-left: 0.75rem !important; } .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-md-4 { padding: 1rem !important; } .pt-md-4 { padding-top: 1rem !important; } .pr-md-4 { padding-right: 1rem !important; } .pb-md-4 { padding-bottom: 1rem !important; } .pl-md-4 { padding-left: 1rem !important; } .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-md-5 { padding: 1.5rem !important; } .pt-md-5 { padding-top: 1.5rem !important; } .pr-md-5 { padding-right: 1.5rem !important; } .pb-md-5 { padding-bottom: 1.5rem !important; } .pl-md-5 { padding-left: 1.5rem !important; } .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-md-6 { padding: 2rem !important; } .pt-md-6 { padding-top: 2rem !important; } .pr-md-6 { padding-right: 2rem !important; } .pb-md-6 { padding-bottom: 2rem !important; } .pl-md-6 { padding-left: 2rem !important; } .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-md-7 { padding: 2.5rem !important; } .pt-md-7 { padding-top: 2.5rem !important; } .pr-md-7 { padding-right: 2.5rem !important; } .pb-md-7 { padding-bottom: 2.5rem !important; } .pl-md-7 { padding-left: 2.5rem !important; } .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-md-8 { padding: 3rem !important; } .pt-md-8 { padding-top: 3rem !important; } .pr-md-8 { padding-right: 3rem !important; } .pb-md-8 { padding-bottom: 3rem !important; } .pl-md-8 { padding-left: 3rem !important; } .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-md-9 { padding: 3.5rem !important; } .pt-md-9 { padding-top: 3.5rem !important; } .pr-md-9 { padding-right: 3.5rem !important; } .pb-md-9 { padding-bottom: 3.5rem !important; } .pl-md-9 { padding-left: 3.5rem !important; } .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-md-10 { padding: 4rem !important; } .pt-md-10 { padding-top: 4rem !important; } .pr-md-10 { padding-right: 4rem !important; } .pb-md-10 { padding-bottom: 4rem !important; } .pl-md-10 { padding-left: 4rem !important; } .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 66.5rem) { .p-lg-0 { padding: 0 !important; } .pt-lg-0 { padding-top: 0 !important; } .pr-lg-0 { padding-right: 0 !important; } .pb-lg-0 { padding-bottom: 0 !important; } .pl-lg-0 { padding-left: 0 !important; } .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1 { padding-left: 0.25rem !important; } .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2 { padding-left: 0.5rem !important; } .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-lg-3 { padding: 0.75rem !important; } .pt-lg-3 { padding-top: 0.75rem !important; } .pr-lg-3 { padding-right: 0.75rem !important; } .pb-lg-3 { padding-bottom: 0.75rem !important; } .pl-lg-3 { padding-left: 0.75rem !important; } .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-lg-4 { padding: 1rem !important; } .pt-lg-4 { padding-top: 1rem !important; } .pr-lg-4 { padding-right: 1rem !important; } .pb-lg-4 { padding-bottom: 1rem !important; } .pl-lg-4 { padding-left: 1rem !important; } .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-lg-5 { padding: 1.5rem !important; } .pt-lg-5 { padding-top: 1.5rem !important; } .pr-lg-5 { padding-right: 1.5rem !important; } .pb-lg-5 { padding-bottom: 1.5rem !important; } .pl-lg-5 { padding-left: 1.5rem !important; } .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-lg-6 { padding: 2rem !important; } .pt-lg-6 { padding-top: 2rem !important; } .pr-lg-6 { padding-right: 2rem !important; } .pb-lg-6 { padding-bottom: 2rem !important; } .pl-lg-6 { padding-left: 2rem !important; } .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-lg-7 { padding: 2.5rem !important; } .pt-lg-7 { padding-top: 2.5rem !important; } .pr-lg-7 { padding-right: 2.5rem !important; } .pb-lg-7 { padding-bottom: 2.5rem !important; } .pl-lg-7 { padding-left: 2.5rem !important; } .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-lg-8 { padding: 3rem !important; } .pt-lg-8 { padding-top: 3rem !important; } .pr-lg-8 { padding-right: 3rem !important; } .pb-lg-8 { padding-bottom: 3rem !important; } .pl-lg-8 { padding-left: 3rem !important; } .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-lg-9 { padding: 3.5rem !important; } .pt-lg-9 { padding-top: 3.5rem !important; } .pr-lg-9 { padding-right: 3.5rem !important; } .pb-lg-9 { padding-bottom: 3.5rem !important; } .pl-lg-9 { padding-left: 3.5rem !important; } .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-lg-10 { padding: 4rem !important; } .pt-lg-10 { padding-top: 4rem !important; } .pr-lg-10 { padding-right: 4rem !important; } .pb-lg-10 { padding-bottom: 4rem !important; } .pl-lg-10 { padding-left: 4rem !important; } .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 87.5rem) { .p-xl-0 { padding: 0 !important; } .pt-xl-0 { padding-top: 0 !important; } .pr-xl-0 { padding-right: 0 !important; } .pb-xl-0 { padding-bottom: 0 !important; } .pl-xl-0 { padding-left: 0 !important; } .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1 { padding-left: 0.25rem !important; } .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2 { padding-left: 0.5rem !important; } .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } .p-xl-3 { padding: 0.75rem !important; } .pt-xl-3 { padding-top: 0.75rem !important; } .pr-xl-3 { padding-right: 0.75rem !important; } .pb-xl-3 { padding-bottom: 0.75rem !important; } .pl-xl-3 { padding-left: 0.75rem !important; } .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } .p-xl-4 { padding: 1rem !important; } .pt-xl-4 { padding-top: 1rem !important; } .pr-xl-4 { padding-right: 1rem !important; } .pb-xl-4 { padding-bottom: 1rem !important; } .pl-xl-4 { padding-left: 1rem !important; } .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } .p-xl-5 { padding: 1.5rem !important; } .pt-xl-5 { padding-top: 1.5rem !important; } .pr-xl-5 { padding-right: 1.5rem !important; } .pb-xl-5 { padding-bottom: 1.5rem !important; } .pl-xl-5 { padding-left: 1.5rem !important; } .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } .p-xl-6 { padding: 2rem !important; } .pt-xl-6 { padding-top: 2rem !important; } .pr-xl-6 { padding-right: 2rem !important; } .pb-xl-6 { padding-bottom: 2rem !important; } .pl-xl-6 { padding-left: 2rem !important; } .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } .p-xl-7 { padding: 2.5rem !important; } .pt-xl-7 { padding-top: 2.5rem !important; } .pr-xl-7 { padding-right: 2.5rem !important; } .pb-xl-7 { padding-bottom: 2.5rem !important; } .pl-xl-7 { padding-left: 2.5rem !important; } .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } .p-xl-8 { padding: 3rem !important; } .pt-xl-8 { padding-top: 3rem !important; } .pr-xl-8 { padding-right: 3rem !important; } .pb-xl-8 { padding-bottom: 3rem !important; } .pl-xl-8 { padding-left: 3rem !important; } .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } .p-xl-9 { padding: 3.5rem !important; } .pt-xl-9 { padding-top: 3.5rem !important; } .pr-xl-9 { padding-right: 3.5rem !important; } .pb-xl-9 { padding-bottom: 3.5rem !important; } .pl-xl-9 { padding-left: 3.5rem !important; } .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } .p-xl-10 { padding: 4rem !important; } .pt-xl-10 { padding-top: 4rem !important; } .pr-xl-10 { padding-right: 4rem !important; } .pb-xl-10 { padding-bottom: 4rem !important; } .pl-xl-10 { padding-left: 4rem !important; } .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media print { .site-footer, .site-button, #edit-this-page, #back-to-top, .site-nav, .main-header { display: none !important; } .side-bar { width: 100%; height: auto; border-right: 0 !important; } .site-header { border-bottom: 1px solid #eeebee; } .site-title { font-size: 1rem !important; font-weight: 700 !important; } .text-small { font-size: 8pt !important; } pre.highlight { border: 1px solid #eeebee; } .main { max-width: none; margin-left: 0; } } - -a.skip-to-main { left: -999px; position: absolute; top: auto; width: 1px; height: 1px; overflow: hidden; z-index: -999; } - -a.skip-to-main:focus, a.skip-to-main:active { color: #7253ed; background-color: #fff; left: auto; top: auto; width: 30%; height: auto; overflow: auto; margin: 10px 35%; padding: 5px; border-radius: 15px; border: 4px solid #5e41d0; text-align: center; font-size: 1.2em; z-index: 999; } - -div.opaque { background-color: #fff; } - -.markdown-alert { padding: 0.5rem 1rem; margin-bottom: 1rem; color: inherit; border-left: 0.25em solid #30363d; } - -.markdown-alert > :first-child { margin-top: 0; } - -.markdown-alert > :last-child { margin-bottom: 0; } - -.markdown-alert .markdown-alert-title { display: flex; font-weight: 500; align-items: center; line-height: 1; } - -.markdown-alert svg { margin-right: 0.5rem !important; } - -.markdown-alert svg path { fill: currentColor; } - -.markdown-alert.markdown-alert-note { border-left-color: #4493f8; } - -.markdown-alert.markdown-alert-note .markdown-alert-title { color: #4493f8; } - -.markdown-alert.markdown-alert-important { border-left-color: #ab7df8; } - -.markdown-alert.markdown-alert-important .markdown-alert-title { color: #ab7df8; } - -.markdown-alert.markdown-alert-warning { border-left-color: #9e6a03; } - -.markdown-alert.markdown-alert-warning .markdown-alert-title { color: #d29922; } - -.markdown-alert.markdown-alert-tip { border-left-color: #238636; } - -.markdown-alert.markdown-alert-tip .markdown-alert-title { color: #3fb950; } - -.markdown-alert.markdown-alert-caution { border-left-color: #da3633; } - -.markdown-alert.markdown-alert-caution .markdown-alert-title { color: #f85149; } - -.site-logo { padding-right: 3rem; } - -html.dark-mode { /* SCROLLBAR STYLING */ /* LEGACY (-2025) */ /* MODERN (2025-) */ } - -html.dark-mode ::-webkit-scrollbar { width: 15.5px; height: 15.5px; } - -html.dark-mode ::-webkit-scrollbar-track { background: #1a1a1a; } - -html.dark-mode ::-webkit-scrollbar-thumb { background: #404040; border-radius: 5.5px; border-left: 3.75px solid #1a1a1a; border-right: 3.75px solid #1a1a1a; } - -html.dark-mode ::-webkit-scrollbar-thumb:hover { background: #909090; } - -html.dark-mode ::-webkit-scrollbar-corner { background: #1a1a1a; } - -@supports (scrollbar-color: #404040 #1a1a1a) { html.dark-mode { scrollbar-color: #404040 #1a1a1a; } } - -/* twinBASIC Light theme - Rouge syntax highlighting */ -/* Selectors are the Rouge HTML formatter classes emitted by docs/_plugins/twinbasic.rb. */ -/* Scoped under .language-tb .highlight so they only repaint tB fenced code blocks. */ -.language-tb .highlight .c1 { /* SymbolComment — ' comments and REM */ color: #448a63; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .cm { /* SymbolComment — C-style block comments */ color: #448a63; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .cp { /* SymbolConditionalCompilationDirective — #If / #ElseIf / #Else / #End If / #Const / #Region */ color: #ad8c98; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .k { /* SymbolKeyword — Dim, If, End, Sub, ... */ color: #385ba9; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .kd { /* SymbolKeyword — Option Strict / Explicit / Compare / Base */ color: #385ba9; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .kt { /* SymbolBuiltInDataType — Boolean, Integer, String, ... */ color: #b1551f; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .lb { /* SymbolLiteralBoolean — True, False */ color: #b877ce; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .lc { /* SymbolContinuationCharacter — '_' line-continuation marker */ color: #808080; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .ld { /* SymbolLiteralDate — #m/d/yyyy [h:mm:ss am/pm]# date-time literals */ color: #b877ce; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .le { /* SymbolLiteralEmpty — Empty */ color: #b877ce; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .ln { /* SymbolLiteralNothing — Nothing */ color: #b877ce; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .lu { /* SymbolLiteralNull — Null */ color: #b877ce; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .mi { /* SymbolLiteralNumeric — integer literals */ color: #457e12; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .mf { /* SymbolLiteralNumeric — float literals */ color: #457e12; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .s { /* SymbolLiteralString — string literals */ color: #679f1e; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .se { /* SymbolLiteralString — "" escape inside string literals */ color: #679f1e; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .o { /* SymbolOperator — +, -, =, <, >, &, ... */ color: #80a1a5; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .ow { /* SymbolNamedOperator — And, Or, Not, Is, Mod, ... */ color: #385ba9; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .na { /* SymbolAttribute — [Documentation(...)] attribute names */ color: #bfbfbf; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .nb { /* SymbolClass — Debug, Err */ color: #a87300; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .nc { /* SymbolClass — Class / CoClass / Enum / Interface / Type / Structure names */ color: #a87300; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .nf { /* SymbolFunction — Function / Sub / Property names */ color: #b96300; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .nn { /* SymbolModule — Module / Namespace / Imports targets */ color: #89894d; font-style: normal; font-weight: normal; text-decoration: none; } - -.language-tb .highlight .nv { /* SymbolVariable — Dim / Const / ReDim variable names */ color: #939000; font-style: normal; font-weight: normal; text-decoration: none; } - -span { color: #7253ed; } - -html.dark-mode { /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ /* Document ========================================================================== */ /** 1. Correct the line height in all browsers. 2. Prevent adjustments of font size after orientation changes in iOS. */ /* Sections ========================================================================== */ /** Remove the margin in all browsers. */ /** Render the `main` element consistently in IE. */ /** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ /* Grouping content ========================================================================== */ /** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ /** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ /* Text-level semantics ========================================================================== */ /** Remove the gray background on active links in IE 10. */ /** 1. Remove the bottom border in Chrome 57- 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ /** Add the correct font weight in Chrome, Edge, and Safari. */ /** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ /** Add the correct font size in all browsers. */ /** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ /* Embedded content ========================================================================== */ /** Remove the border on images inside links in IE 10. */ /* Forms ========================================================================== */ /** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ /** Show the overflow in IE. 1. Show the overflow in Edge. */ /** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ /** Correct the inability to style clickable types in iOS and Safari. */ /** Remove the inner border and padding in Firefox. */ /** Restore the focus styles unset by the previous rule. */ /** Correct the padding in Firefox. */ /** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ /** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ /** Remove the default vertical scrollbar in IE 10+. */ /** 1. Add the correct box sizing in IE 10. 2. Remove the padding in IE 10. */ /** Correct the cursor style of increment and decrement buttons in Chrome. */ /** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ /** Remove the inner padding in Chrome and Safari on macOS. */ /** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ /* Interactive ========================================================================== */ /* Add the correct display in Edge, IE 10+, and Firefox. */ /* Add the correct display in all browsers. */ /* Misc ========================================================================== */ /** Add the correct display in IE 10+. */ /** Add the correct display in IE 10. */ /* twinBASIC Dark theme - Rouge syntax highlighting */ /* Selectors are the Rouge HTML formatter classes emitted by docs/_plugins/twinbasic.rb. */ /* Scoped under .language-tb .highlight so they only repaint tB fenced code blocks. */ /* tB CodePanelBackColor scoped to tB code-block containers (.language-tb). */ /* The .language-tb class lives on the outer .highlighter-rouge div emitted */ /* by kramdown for ```tb``` fenced blocks, so `.language-tb.highlighter-rouge` */ /* (no space) hits the outer container and `.language-tb ` hits */ /* the nested .highlight / pre / etc. The partial is imported inside */ /* `html.dark-mode { ... }` by just-the-docs-combined.scss, so SCSS nesting */ /* confines these rules to dark mode automatically. */ /* just-the-docs-switchable-src.css */ } - -html.dark-mode .highlight, html.dark-mode pre.highlight { background: #f9f9f9; color: #383942; } - -html.dark-mode .highlight pre { background: #f9f9f9; } - -html.dark-mode .highlight .hll { background: #f9f9f9; } - -html.dark-mode .highlight .c { color: #9fa0a6; font-style: italic; } - -html.dark-mode .highlight .err { color: #fff; background-color: #e05151; } - -html.dark-mode .highlight .k { color: #a625a4; } - -html.dark-mode .highlight .l { color: #50a04f; } - -html.dark-mode .highlight .n { color: #383942; } - -html.dark-mode .highlight .o { color: #383942; } - -html.dark-mode .highlight .p { color: #383942; } - -html.dark-mode .highlight .cm { color: #9fa0a6; font-style: italic; } - -html.dark-mode .highlight .cp { color: #9fa0a6; font-style: italic; } - -html.dark-mode .highlight .c1 { color: #9fa0a6; font-style: italic; } - -html.dark-mode .highlight .cs { color: #9fa0a6; font-style: italic; } - -html.dark-mode .highlight .ge { font-style: italic; } - -html.dark-mode .highlight .gs { font-weight: 700; } - -html.dark-mode .highlight .kc { color: #a625a4; } - -html.dark-mode .highlight .kd { color: #a625a4; } - -html.dark-mode .highlight .kn { color: #a625a4; } - -html.dark-mode .highlight .kp { color: #a625a4; } - -html.dark-mode .highlight .kr { color: #a625a4; } - -html.dark-mode .highlight .kt { color: #a625a4; } - -html.dark-mode .highlight .ld { color: #50a04f; } - -html.dark-mode .highlight .m { color: #b66a00; } - -html.dark-mode .highlight .s { color: #50a04f; } - -html.dark-mode .highlight .na { color: #b66a00; } - -html.dark-mode .highlight .nb { color: #ca7601; } - -html.dark-mode .highlight .nc { color: #ca7601; } - -html.dark-mode .highlight .no { color: #ca7601; } - -html.dark-mode .highlight .nd { color: #ca7601; } - -html.dark-mode .highlight .ni { color: #ca7601; } - -html.dark-mode .highlight .ne { color: #ca7601; } - -html.dark-mode .highlight .nf { color: #383942; } - -html.dark-mode .highlight .nl { color: #ca7601; } - -html.dark-mode .highlight .nn { color: #383942; } - -html.dark-mode .highlight .nx { color: #383942; } - -html.dark-mode .highlight .py { color: #ca7601; } - -html.dark-mode .highlight .nt { color: #e35549; } - -html.dark-mode .highlight .nv { color: #ca7601; } - -html.dark-mode .highlight .ow { font-weight: 700; } - -html.dark-mode .highlight .w { color: #f8f8f2; } - -html.dark-mode .highlight .mf { color: #b66a00; } - -html.dark-mode .highlight .mh { color: #b66a00; } - -html.dark-mode .highlight .mi { color: #b66a00; } - -html.dark-mode .highlight .mo { color: #b66a00; } - -html.dark-mode .highlight .sb { color: #50a04f; } - -html.dark-mode .highlight .sc { color: #50a04f; } - -html.dark-mode .highlight .sd { color: #50a04f; } - -html.dark-mode .highlight .s2 { color: #50a04f; } - -html.dark-mode .highlight .se { color: #50a04f; } - -html.dark-mode .highlight .sh { color: #50a04f; } - -html.dark-mode .highlight .si { color: #50a04f; } - -html.dark-mode .highlight .sx { color: #50a04f; } - -html.dark-mode .highlight .sr { color: #0083bb; } - -html.dark-mode .highlight .s1 { color: #50a04f; } - -html.dark-mode .highlight .ss { color: #0083bb; } - -html.dark-mode .highlight .bp { color: #ca7601; } - -html.dark-mode .highlight .vc { color: #ca7601; } - -html.dark-mode .highlight .vg { color: #ca7601; } - -html.dark-mode .highlight .vi { color: #e35549; } - -html.dark-mode .highlight .il { color: #b66a00; } - -html.dark-mode .highlight .gu { color: #75715e; } - -html.dark-mode .highlight .gd { color: #e05151; } - -html.dark-mode .highlight .gi { color: #43d089; } - -html.dark-mode .highlight .language-json .w + .s2 { color: #e35549; } - -html.dark-mode .highlight .language-json .kc { color: #0083bb; } - -html.dark-mode .highlight, html.dark-mode pre.highlight { background: #31343f; color: #dee2f7; } - -html.dark-mode .highlight pre { background: #31343f; } - -html.dark-mode .highlight .hll { background: #31343f; } - -html.dark-mode .highlight .c { color: #63677e; font-style: italic; } - -html.dark-mode .highlight .err { color: #960050; background-color: #1e0010; } - -html.dark-mode .highlight .k { color: #e19ef5; } - -html.dark-mode .highlight .l { color: #a3eea0; } - -html.dark-mode .highlight .n { color: #dee2f7; } - -html.dark-mode .highlight .o { color: #dee2f7; } - -html.dark-mode .highlight .p { color: #dee2f7; } - -html.dark-mode .highlight .cm { color: #63677e; font-style: italic; } - -html.dark-mode .highlight .cp { color: #63677e; font-style: italic; } - -html.dark-mode .highlight .c1 { color: #63677e; font-style: italic; } - -html.dark-mode .highlight .cs { color: #63677e; font-style: italic; } - -html.dark-mode .highlight .ge { font-style: italic; } - -html.dark-mode .highlight .gs { font-weight: 700; } - -html.dark-mode .highlight .kc { color: #e19ef5; } - -html.dark-mode .highlight .kd { color: #e19ef5; } - -html.dark-mode .highlight .kn { color: #e19ef5; } - -html.dark-mode .highlight .kp { color: #e19ef5; } - -html.dark-mode .highlight .kr { color: #e19ef5; } - -html.dark-mode .highlight .kt { color: #e19ef5; } - -html.dark-mode .highlight .ld { color: #a3eea0; } - -html.dark-mode .highlight .m { color: #eddc96; } - -html.dark-mode .highlight .s { color: #a3eea0; } - -html.dark-mode .highlight .na { color: #eddc96; } - -html.dark-mode .highlight .nb { color: #fdce68; } - -html.dark-mode .highlight .nc { color: #fdce68; } - -html.dark-mode .highlight .no { color: #fdce68; } - -html.dark-mode .highlight .nd { color: #fdce68; } - -html.dark-mode .highlight .ni { color: #fdce68; } - -html.dark-mode .highlight .ne { color: #fdce68; } - -html.dark-mode .highlight .nf { color: #dee2f7; } - -html.dark-mode .highlight .nl { color: #fdce68; } - -html.dark-mode .highlight .nn { color: #dee2f7; } - -html.dark-mode .highlight .nx { color: #dee2f7; } - -html.dark-mode .highlight .py { color: #fdce68; } - -html.dark-mode .highlight .nt { color: #f9867b; } - -html.dark-mode .highlight .nv { color: #fdce68; } - -html.dark-mode .highlight .ow { font-weight: 700; } - -html.dark-mode .highlight .w { color: #f8f8f2; } - -html.dark-mode .highlight .mf { color: #eddc96; } - -html.dark-mode .highlight .mh { color: #eddc96; } - -html.dark-mode .highlight .mi { color: #eddc96; } - -html.dark-mode .highlight .mo { color: #eddc96; } - -html.dark-mode .highlight .sb { color: #a3eea0; } - -html.dark-mode .highlight .sc { color: #a3eea0; } - -html.dark-mode .highlight .sd { color: #a3eea0; } - -html.dark-mode .highlight .s2 { color: #a3eea0; } - -html.dark-mode .highlight .se { color: #a3eea0; } - -html.dark-mode .highlight .sh { color: #a3eea0; } - -html.dark-mode .highlight .si { color: #a3eea0; } - -html.dark-mode .highlight .sx { color: #a3eea0; } - -html.dark-mode .highlight .sr { color: #7be2f9; } - -html.dark-mode .highlight .s1 { color: #a3eea0; } - -html.dark-mode .highlight .ss { color: #7be2f9; } - -html.dark-mode .highlight .bp { color: #fdce68; } - -html.dark-mode .highlight .vc { color: #fdce68; } - -html.dark-mode .highlight .vg { color: #fdce68; } - -html.dark-mode .highlight .vi { color: #f9867b; } - -html.dark-mode .highlight .il { color: #eddc96; } - -html.dark-mode .highlight .gu { color: #75715e; } - -html.dark-mode .highlight .gd { color: #f92672; } - -html.dark-mode .highlight .gi { color: #a6e22e; } - -html.dark-mode html { line-height: 1.15; /* 1 */ text-size-adjust: 100%; /* 2 */ } - -html.dark-mode body { margin: 0; } - -html.dark-mode main { display: block; } - -html.dark-mode h1 { font-size: 2em; margin: 0.67em 0; } - -html.dark-mode hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } - -html.dark-mode pre { font-family: monospace; /* 1 */ font-size: 1em; /* 2 */ } - -html.dark-mode a { background-color: transparent; } - -html.dark-mode abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } - -html.dark-mode b, html.dark-mode strong { font-weight: bolder; } - -html.dark-mode code, html.dark-mode kbd, html.dark-mode samp { font-family: monospace; /* 1 */ font-size: 1em; /* 2 */ } - -html.dark-mode small { font-size: 80%; } - -html.dark-mode sub, html.dark-mode sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } - -html.dark-mode sub { bottom: -0.25em; } - -html.dark-mode sup { top: -0.5em; } - -html.dark-mode img { border-style: none; } - -html.dark-mode button, html.dark-mode input, html.dark-mode optgroup, html.dark-mode select, html.dark-mode textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } - -html.dark-mode button, html.dark-mode input { /* 1 */ overflow: visible; } - -html.dark-mode button, html.dark-mode select { /* 1 */ text-transform: none; } - -html.dark-mode button, html.dark-mode [type="button"], html.dark-mode [type="reset"], html.dark-mode [type="submit"] { appearance: button; } - -html.dark-mode button::-moz-focus-inner, html.dark-mode [type="button"]::-moz-focus-inner, html.dark-mode [type="reset"]::-moz-focus-inner, html.dark-mode [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } - -html.dark-mode button:-moz-focusring, html.dark-mode [type="button"]:-moz-focusring, html.dark-mode [type="reset"]:-moz-focusring, html.dark-mode [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } - -html.dark-mode fieldset { padding: 0.35em 0.75em 0.625em; } - -html.dark-mode legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } - -html.dark-mode progress { vertical-align: baseline; } - -html.dark-mode textarea { overflow: auto; } - -html.dark-mode [type="checkbox"], html.dark-mode [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } - -html.dark-mode [type="number"]::-webkit-inner-spin-button, html.dark-mode [type="number"]::-webkit-outer-spin-button { height: auto; } - -html.dark-mode [type="search"] { appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } - -html.dark-mode [type="search"]::-webkit-search-decoration { appearance: none; } - -html.dark-mode ::-webkit-file-upload-button { appearance: button; /* 1 */ font: inherit; /* 2 */ } - -html.dark-mode details { display: block; } - -html.dark-mode summary { display: list-item; } - -html.dark-mode template { display: none; } - -html.dark-mode [hidden] { display: none; } - -html.dark-mode :root { color-scheme: dark; } - -html.dark-mode * { box-sizing: border-box; } - -html.dark-mode html { scroll-behavior: smooth; } - -html.dark-mode html { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode html { font-size: 1rem !important; } } - -html.dark-mode body { font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Segoe UI Emoji"; font-size: inherit; line-height: 1.4; color: #e6e1e8; background-color: #27262b; overflow-wrap: break-word; } - -html.dark-mode ol, html.dark-mode ul, html.dark-mode dl, html.dark-mode pre, html.dark-mode address, html.dark-mode blockquote, html.dark-mode table, html.dark-mode div, html.dark-mode hr, html.dark-mode form, html.dark-mode fieldset, html.dark-mode noscript .table-wrapper { margin-top: 0; } - -html.dark-mode h1, html.dark-mode h2, html.dark-mode h3, html.dark-mode h4, html.dark-mode h5, html.dark-mode h6, html.dark-mode #toctitle { margin-top: 0; margin-bottom: 1em; font-weight: 500; line-height: 1.25; color: #f5f6fa; } - -html.dark-mode p { margin-top: 1em; margin-bottom: 1em; } - -html.dark-mode a { color: #2c84fa; text-decoration: none; } - -html.dark-mode a:not([class]) { text-decoration: underline; text-decoration-color: #44434d; text-underline-offset: 2px; } - -html.dark-mode a:not([class]):hover { text-decoration-color: rgba(44, 132, 250, 0.45); } - -html.dark-mode code { font-family: "SFMono-Regular", menlo, consolas, monospace; font-size: 0.95em; line-height: 1.4; } - -html.dark-mode figure, html.dark-mode pre { margin: 0; } - -html.dark-mode li { margin: 0.25em 0; } - -html.dark-mode img { max-width: 100%; height: auto; } - -html.dark-mode hr { height: 1px; padding: 0; margin: 2rem 0; background-color: #44434d; border: 0; } - -html.dark-mode blockquote { margin: 10px 0; margin-block-start: 0; margin-inline-start: 0; padding-left: 1rem; border-left: 3px solid #44434d; } - -html.dark-mode .side-bar { z-index: 0; display: flex; flex-wrap: wrap; background-color: #27262b; } - -@media (min-width: 50rem) { html.dark-mode .side-bar { flex-flow: column nowrap; position: fixed; width: 15.5rem; height: 100%; border-right: 1px solid #44434d; align-items: flex-end; } } - -@media (min-width: 66.5rem) { html.dark-mode .side-bar { width: calc((100% - 66.5rem) / 2 + 16.5rem); min-width: 16.5rem; } } - -@media (min-width: 50rem) { html.dark-mode .side-bar + .main { margin-left: 15.5rem; } } - -@media (min-width: 66.5rem) { html.dark-mode .side-bar + .main { margin-left: Max(16.5rem, calc((100% - 66.5rem) / 2 + 16.5rem)); } } - -html.dark-mode .side-bar + .main .main-header { display: none; background-color: #27262b; } - -@media (min-width: 50rem) { html.dark-mode .side-bar + .main .main-header { display: flex; background-color: #27262b; } } - -html.dark-mode .side-bar + .main .main-header.nav-open { display: block; } - -@media (min-width: 50rem) { html.dark-mode .side-bar + .main .main-header.nav-open { display: flex; } } - -html.dark-mode .main { margin: auto; } - -@media (min-width: 50rem) { html.dark-mode .main { position: relative; max-width: 50rem; } } - -html.dark-mode .main-content-wrap { padding-top: 1rem; padding-bottom: 1rem; padding-right: 1rem; padding-left: 1rem; } - -@media (min-width: 50rem) { html.dark-mode .main-content-wrap { padding-right: 2rem; padding-left: 2rem; } } - -@media (min-width: 50rem) { html.dark-mode .main-content-wrap { padding-top: 2rem; padding-bottom: 2rem; } } - -html.dark-mode .main-header { z-index: 0; border-bottom: 1px solid #44434d; } - -@media (min-width: 50rem) { html.dark-mode .main-header { display: flex; justify-content: space-between; height: 3.75rem; } } - -html.dark-mode .site-nav, html.dark-mode .site-header, html.dark-mode .site-footer { width: 100%; } - -@media (min-width: 66.5rem) { html.dark-mode .site-nav, html.dark-mode .site-header, html.dark-mode .site-footer { width: 16.5rem; } } - -html.dark-mode .site-nav { display: none; } - -html.dark-mode .site-nav.nav-open { display: block; } - -@media (min-width: 50rem) { html.dark-mode .site-nav { display: block; padding-top: 3rem; padding-bottom: 1rem; overflow-y: auto; flex: 1 1 auto; } } - -html.dark-mode .site-header { display: flex; min-height: 3.75rem; align-items: center; } - -@media (min-width: 50rem) { html.dark-mode .site-header { height: 3.75rem; max-height: 3.75rem; border-bottom: 1px solid #44434d; } } - -html.dark-mode .site-title { flex-grow: 1; display: flex; height: 100%; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; color: #f5f6fa; padding-right: 1rem; padding-left: 1rem; } - -@media (min-width: 50rem) { html.dark-mode .site-title { padding-right: 2rem; padding-left: 2rem; } } - -html.dark-mode .site-title { font-size: 1.125rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .site-title { font-size: 1.5rem !important; line-height: 1.25; } } - -@media (min-width: 50rem) { html.dark-mode .site-title { padding-top: 0.5rem; padding-bottom: 0.5rem; } } - -html.dark-mode .site-logo { width: 100%; height: 100%; background-image: url("/favicon.png"); background-repeat: no-repeat; background-position: left center; background-size: contain; } - -html.dark-mode .site-button { display: flex; height: 100%; padding: 1rem; align-items: center; } - -@media (min-width: 50rem) { html.dark-mode .site-header .site-button { display: none; } } - -html.dark-mode .site-title:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } - -html.dark-mode .site-button:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } - -html.dark-mode body { position: relative; padding-bottom: 4rem; overflow-y: scroll; } - -@media (min-width: 50rem) { html.dark-mode body { position: static; padding-bottom: 0; } } - -html.dark-mode .site-footer { position: absolute; bottom: 0; left: 0; padding-top: 1rem; padding-bottom: 1rem; color: #959396; padding-right: 1rem; padding-left: 1rem; } - -@media (min-width: 50rem) { html.dark-mode .site-footer { padding-right: 2rem; padding-left: 2rem; } } - -html.dark-mode .site-footer { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .site-footer { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .site-footer { position: static; justify-self: end; } } - -html.dark-mode .icon { width: 1.5rem; height: 1.5rem; color: #2c84fa; } - -html.dark-mode .main-content { line-height: 1.6; } - -html.dark-mode .main-content ol, html.dark-mode .main-content ul, html.dark-mode .main-content dl, html.dark-mode .main-content pre, html.dark-mode .main-content address, html.dark-mode .main-content blockquote, html.dark-mode .main-content .table-wrapper { margin-top: 0.5em; } - -html.dark-mode .main-content a { overflow: hidden; text-overflow: ellipsis; } - -html.dark-mode .main-content ul, html.dark-mode .main-content ol { padding-left: 1.5em; } - -html.dark-mode .main-content li .highlight { margin-top: 0.25rem; } - -html.dark-mode .main-content ol { list-style-type: none; counter-reset: step-counter; } - -html.dark-mode .main-content ol > li { position: relative; } - -html.dark-mode .main-content ol > li::before { position: absolute; top: 0.2em; left: -1.6em; color: #959396; content: counter(step-counter); counter-increment: step-counter; } - -html.dark-mode .main-content ol > li::before { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .main-content ol > li::before { font-size: 0.875rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .main-content ol > li::before { top: 0.11em; } } - -html.dark-mode .main-content ol > li ol { counter-reset: sub-counter; } - -html.dark-mode .main-content ol > li ol > li::before { content: counter(sub-counter, lower-alpha); counter-increment: sub-counter; } - -html.dark-mode .main-content ul { list-style: none; } - -html.dark-mode .main-content ul > li::before { position: absolute; margin-left: -1.4em; color: #959396; content: "•"; } - -html.dark-mode .main-content .task-list-item::before { content: ""; } - -html.dark-mode .main-content .task-list-item-checkbox { margin-right: 0.6em; margin-left: -1.4em; } - -html.dark-mode .main-content hr + * { margin-top: 0; } - -html.dark-mode .main-content h1:first-of-type { margin-top: 0.5em; } - -html.dark-mode .main-content dl { display: grid; grid-template: auto / 10em 1fr; } - -html.dark-mode .main-content dt, html.dark-mode .main-content dd { margin: 0.25em 0; } - -html.dark-mode .main-content dt { grid-column: 1; font-weight: 500; text-align: right; } - -html.dark-mode .main-content dt::after { content: ":"; } - -html.dark-mode .main-content dd { grid-column: 2; margin-bottom: 0; margin-left: 1em; } - -html.dark-mode .main-content dd blockquote:first-child, html.dark-mode .main-content dd div:first-child, html.dark-mode .main-content dd dl:first-child, html.dark-mode .main-content dd dt:first-child, html.dark-mode .main-content dd h1:first-child, html.dark-mode .main-content dd h2:first-child, html.dark-mode .main-content dd h3:first-child, html.dark-mode .main-content dd h4:first-child, html.dark-mode .main-content dd h5:first-child, html.dark-mode .main-content dd h6:first-child, html.dark-mode .main-content dd li:first-child, html.dark-mode .main-content dd ol:first-child, html.dark-mode .main-content dd p:first-child, html.dark-mode .main-content dd pre:first-child, html.dark-mode .main-content dd table:first-child, html.dark-mode .main-content dd ul:first-child, html.dark-mode .main-content dd .table-wrapper:first-child { margin-top: 0; } - -html.dark-mode .main-content dd dl:first-child dt:first-child, html.dark-mode .main-content dd dl:first-child dd:nth-child(2), html.dark-mode .main-content ol dl:first-child dt:first-child, html.dark-mode .main-content ol dl:first-child dd:nth-child(2), html.dark-mode .main-content ul dl:first-child dt:first-child, html.dark-mode .main-content ul dl:first-child dd:nth-child(2) { margin-top: 0; } - -html.dark-mode .main-content .anchor-heading { position: absolute; right: -1rem; width: 1.5rem; height: 100%; padding-right: 0.25rem; padding-left: 0.25rem; overflow: visible; } - -@media (min-width: 50rem) { html.dark-mode .main-content .anchor-heading { right: auto; left: -1.5rem; } } - -html.dark-mode .main-content .anchor-heading svg { display: inline-block; width: 100%; height: 100%; color: #2c84fa; visibility: hidden; } - -html.dark-mode .main-content .anchor-heading:hover svg, html.dark-mode .main-content .anchor-heading:focus svg, html.dark-mode .main-content h1:hover > .anchor-heading svg, html.dark-mode .main-content h2:hover > .anchor-heading svg, html.dark-mode .main-content h3:hover > .anchor-heading svg, html.dark-mode .main-content h4:hover > .anchor-heading svg, html.dark-mode .main-content h5:hover > .anchor-heading svg, html.dark-mode .main-content h6:hover > .anchor-heading svg { visibility: visible; } - -html.dark-mode .main-content summary { cursor: pointer; } - -html.dark-mode .main-content h1, html.dark-mode .main-content h2, html.dark-mode .main-content h3, html.dark-mode .main-content h4, html.dark-mode .main-content h5, html.dark-mode .main-content h6, html.dark-mode .main-content #toctitle { position: relative; margin-top: 1.5em; margin-bottom: 0.25em; } - -html.dark-mode .main-content h1 + table, html.dark-mode .main-content h1 + .table-wrapper, html.dark-mode .main-content h1 + .code-example, html.dark-mode .main-content h1 + .highlighter-rouge, html.dark-mode .main-content h1 + .sectionbody .listingblock, html.dark-mode .main-content h2 + table, html.dark-mode .main-content h2 + .table-wrapper, html.dark-mode .main-content h2 + .code-example, html.dark-mode .main-content h2 + .highlighter-rouge, html.dark-mode .main-content h2 + .sectionbody .listingblock, html.dark-mode .main-content h3 + table, html.dark-mode .main-content h3 + .table-wrapper, html.dark-mode .main-content h3 + .code-example, html.dark-mode .main-content h3 + .highlighter-rouge, html.dark-mode .main-content h3 + .sectionbody .listingblock, html.dark-mode .main-content h4 + table, html.dark-mode .main-content h4 + .table-wrapper, html.dark-mode .main-content h4 + .code-example, html.dark-mode .main-content h4 + .highlighter-rouge, html.dark-mode .main-content h4 + .sectionbody .listingblock, html.dark-mode .main-content h5 + table, html.dark-mode .main-content h5 + .table-wrapper, html.dark-mode .main-content h5 + .code-example, html.dark-mode .main-content h5 + .highlighter-rouge, html.dark-mode .main-content h5 + .sectionbody .listingblock, html.dark-mode .main-content h6 + table, html.dark-mode .main-content h6 + .table-wrapper, html.dark-mode .main-content h6 + .code-example, html.dark-mode .main-content h6 + .highlighter-rouge, html.dark-mode .main-content h6 + .sectionbody .listingblock, html.dark-mode .main-content #toctitle + table, html.dark-mode .main-content #toctitle + .table-wrapper, html.dark-mode .main-content #toctitle + .code-example, html.dark-mode .main-content #toctitle + .highlighter-rouge, html.dark-mode .main-content #toctitle + .sectionbody .listingblock { margin-top: 1em; } - -html.dark-mode .main-content h1 + p:not(.label), html.dark-mode .main-content h2 + p:not(.label), html.dark-mode .main-content h3 + p:not(.label), html.dark-mode .main-content h4 + p:not(.label), html.dark-mode .main-content h5 + p:not(.label), html.dark-mode .main-content h6 + p:not(.label), html.dark-mode .main-content #toctitle + p:not(.label) { margin-top: 0; } - -html.dark-mode .main-content > h1:first-child, html.dark-mode .main-content > h2:first-child, html.dark-mode .main-content > h3:first-child, html.dark-mode .main-content > h4:first-child, html.dark-mode .main-content > h5:first-child, html.dark-mode .main-content > h6:first-child, html.dark-mode .main-content > .sect1:first-child > h2, html.dark-mode .main-content > .sect2:first-child > h3, html.dark-mode .main-content > .sect3:first-child > h4, html.dark-mode .main-content > .sect4:first-child > h5, html.dark-mode .main-content > .sect5:first-child > h6 { margin-top: 0.5rem; } - -html.dark-mode .nav-list { padding: 0; margin-top: 0; margin-bottom: 0; list-style: none; } - -html.dark-mode .nav-list .nav-list-item { position: relative; margin: 0; } - -html.dark-mode .nav-list .nav-list-item { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .nav-list .nav-list-item { font-size: 1rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .nav-list .nav-list-item { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) and (min-width: 31.25rem) { html.dark-mode .nav-list .nav-list-item { font-size: 0.875rem !important; } } - -html.dark-mode .nav-list .nav-list-item .nav-list-link { display: block; min-height: 3rem; padding-top: 0.25rem; padding-bottom: 0.25rem; line-height: 2.5rem; padding-right: 3rem; padding-left: 1rem; } - -@media (min-width: 50rem) { html.dark-mode .nav-list .nav-list-item .nav-list-link { min-height: 2rem; line-height: 1.5rem; padding-right: 2rem; padding-left: 2rem; } } - -html.dark-mode .nav-list .nav-list-item .nav-list-link.external > svg { width: 1rem; height: 1rem; vertical-align: text-bottom; } - -html.dark-mode .nav-list .nav-list-item .nav-list-link.active { font-weight: 600; text-decoration: none; } - -html.dark-mode .nav-list .nav-list-item .nav-list-link:hover, html.dark-mode .nav-list .nav-list-item .nav-list-link.active { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } - -html.dark-mode .nav-list .nav-list-item .nav-list-expander { position: absolute; right: 0; width: 3rem; height: 3rem; padding: 0.75rem; color: #2c84fa; } - -@media (min-width: 50rem) { html.dark-mode .nav-list .nav-list-item .nav-list-expander { width: 2rem; height: 2rem; padding: 0.5rem; } } - -html.dark-mode .nav-list .nav-list-item .nav-list-expander:hover { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 100%); } - -html.dark-mode .nav-list .nav-list-item .nav-list-expander svg { transform: rotate(90deg); } - -html.dark-mode .nav-list .nav-list-item > .nav-list { display: none; padding-left: 0.75rem; list-style: none; } - -html.dark-mode .nav-list .nav-list-item > .nav-list .nav-list-item { position: relative; } - -html.dark-mode .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link { color: #959396; } - -html.dark-mode .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander { color: #959396; } - -html.dark-mode .nav-list .nav-list-item.active > .nav-list-expander svg { transform: rotate(-90deg); } - -html.dark-mode .nav-list .nav-list-item.active > .nav-list { display: block; } - -html.dark-mode .nav-category { padding: 0.5rem 1rem; font-weight: 600; text-align: start; text-transform: uppercase; border-bottom: 1px solid #44434d; } - -html.dark-mode .nav-category { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .nav-category { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .nav-category { padding: 0.5rem 2rem; margin-top: 1rem; text-align: start; } html.dark-mode .nav-category:first-child { margin-top: 0; } } - -html.dark-mode .nav-list.nav-category-list > .nav-list-item { margin: 0; } - -html.dark-mode .nav-list.nav-category-list > .nav-list-item > .nav-list { padding: 0; } - -html.dark-mode .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link { color: #2c84fa; } - -html.dark-mode .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-expander { color: #2c84fa; } - -html.dark-mode .aux-nav { height: 100%; overflow-x: auto; } - -html.dark-mode .aux-nav { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .aux-nav { font-size: 0.75rem !important; } } - -html.dark-mode .aux-nav .aux-nav-list { display: flex; height: 100%; padding: 0; margin: 0; list-style: none; } - -html.dark-mode .aux-nav .aux-nav-list-item { display: inline-block; height: 100%; padding: 0; margin: 0; } - -@media (min-width: 50rem) { html.dark-mode .aux-nav { padding-right: 1rem; } } - -@media (min-width: 50rem) { html.dark-mode .breadcrumb-nav { margin-top: -1rem; } } - -html.dark-mode .breadcrumb-nav-list { padding-left: 0; margin-bottom: 0.75rem; list-style: none; } - -html.dark-mode .breadcrumb-nav-list-item { display: table-cell; } - -html.dark-mode .breadcrumb-nav-list-item { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .breadcrumb-nav-list-item { font-size: 0.75rem !important; } } - -html.dark-mode .breadcrumb-nav-list-item::before { display: none; } - -html.dark-mode .breadcrumb-nav-list-item::after { display: inline-block; margin-right: 0.5rem; margin-left: 0.5rem; color: #959396; content: "/"; } - -html.dark-mode .breadcrumb-nav-list-item:last-child::after { content: ""; } - -html.dark-mode h1, html.dark-mode .text-alpha { font-weight: 300; } - -html.dark-mode h1, html.dark-mode .text-alpha { font-size: 2rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { html.dark-mode h1, html.dark-mode .text-alpha { font-size: 2.25rem !important; } } - -html.dark-mode h2, html.dark-mode .text-beta, html.dark-mode #toctitle { font-size: 1.125rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode h2, html.dark-mode .text-beta, html.dark-mode #toctitle { font-size: 1.5rem !important; line-height: 1.25; } } - -html.dark-mode h3, html.dark-mode .text-gamma { font-size: 1rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode h3, html.dark-mode .text-gamma { font-size: 1.125rem !important; } } - -html.dark-mode h4, html.dark-mode .text-delta { font-weight: 400; text-transform: uppercase; letter-spacing: 0.1em; } - -html.dark-mode h4, html.dark-mode .text-delta { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode h4, html.dark-mode .text-delta { font-size: 0.75rem !important; } } - -html.dark-mode h4 code { text-transform: none; } - -html.dark-mode h5, html.dark-mode .text-epsilon { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode h5, html.dark-mode .text-epsilon { font-size: 0.875rem !important; } } - -html.dark-mode h6, html.dark-mode .text-zeta { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode h6, html.dark-mode .text-zeta { font-size: 0.75rem !important; } } - -html.dark-mode .text-small { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .text-small { font-size: 0.75rem !important; } } - -html.dark-mode .text-mono { font-family: "SFMono-Regular", menlo, consolas, monospace !important; } - -html.dark-mode .text-left { text-align: left !important; } - -html.dark-mode .text-center { text-align: center !important; } - -html.dark-mode .text-right { text-align: right !important; } - -html.dark-mode .label:not(g), html.dark-mode .label-blue:not(g) { display: inline-block; padding: 0.16em 0.56em; margin-right: 0.5rem; margin-left: 0.5rem; color: #fff; text-transform: uppercase; vertical-align: middle; background-color: #2869e6; border-radius: 12px; } - -html.dark-mode .label:not(g), html.dark-mode .label-blue:not(g) { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .label:not(g), html.dark-mode .label-blue:not(g) { font-size: 0.75rem !important; } } - -html.dark-mode .label-green:not(g) { background-color: #009c7b; } - -html.dark-mode .label-purple:not(g) { background-color: #5e41d0; } - -html.dark-mode .label-red:not(g) { background-color: #e94c4c; } - -html.dark-mode .label-yellow:not(g) { color: #44434d; background-color: #f7d12e; } - -html.dark-mode .btn { display: inline-block; box-sizing: border-box; padding: 0.3em 1em; margin: 0; font-family: inherit; font-size: inherit; font-weight: 500; line-height: 1.5; color: #2c84fa; text-decoration: none; vertical-align: baseline; cursor: pointer; background-color: #302d36; border-width: 0; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); appearance: none; } - -html.dark-mode .btn:focus { text-decoration: none; outline: none; box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } - -html.dark-mode .btn:focus:hover, html.dark-mode .btn.selected:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.25); } - -html.dark-mode .btn:hover, html.dark-mode .btn.zeroclipboard-is-hover { color: #227efa; } - -html.dark-mode .btn:hover, html.dark-mode .btn:active, html.dark-mode .btn.zeroclipboard-is-hover, html.dark-mode .btn.zeroclipboard-is-active { text-decoration: none; background-color: #2e2b33; } - -html.dark-mode .btn:active, html.dark-mode .btn.selected, html.dark-mode .btn.zeroclipboard-is-active { background-color: #29262e; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -html.dark-mode .btn.selected:hover { background-color: #cfcfcf; } - -html.dark-mode .btn:disabled, html.dark-mode .btn:disabled:hover, html.dark-mode .btn.disabled, html.dark-mode .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; box-shadow: none; } - -html.dark-mode .btn-outline { color: #2c84fa; background: transparent; box-shadow: inset 0 0 0 2px #e6e1e8; } - -html.dark-mode .btn-outline:hover, html.dark-mode .btn-outline:active, html.dark-mode .btn-outline.zeroclipboard-is-hover, html.dark-mode .btn-outline.zeroclipboard-is-active { color: #1878fa; text-decoration: none; background-color: transparent; box-shadow: inset 0 0 0 3px #e6e1e8; } - -html.dark-mode .btn-outline:focus { text-decoration: none; outline: none; box-shadow: inset 0 0 0 2px #5c5962, 0 0 0 3px rgba(0, 0, 255, 0.25); } - -html.dark-mode .btn-outline:focus:hover, html.dark-mode .btn-outline.selected:focus { box-shadow: inset 0 0 0 2px #5c5962; } - -html.dark-mode .btn-primary { color: #fff; background-color: #2448a7; background-image: linear-gradient(#2b55c4, #2448a7); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -html.dark-mode .btn-primary:hover, html.dark-mode .btn-primary.zeroclipboard-is-hover { color: #fff; background-color: #22459e; background-image: linear-gradient(#2850b7, #22459e); } - -html.dark-mode .btn-primary:active, html.dark-mode .btn-primary.selected, html.dark-mode .btn-primary.zeroclipboard-is-active { background-color: #21439a; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -html.dark-mode .btn-primary.selected:hover { background-color: #1d3a85; } - -html.dark-mode .btn-purple { color: #fff; background-color: #5739ce; background-image: linear-gradient(#6f55d5, #5739ce); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -html.dark-mode .btn-purple:hover, html.dark-mode .btn-purple.zeroclipboard-is-hover { color: #fff; background-color: #5132cb; background-image: linear-gradient(#6549d2, #5132cb); } - -html.dark-mode .btn-purple:active, html.dark-mode .btn-purple.selected, html.dark-mode .btn-purple.zeroclipboard-is-active { background-color: #4f31c6; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -html.dark-mode .btn-purple.selected:hover { background-color: #472cb2; } - -html.dark-mode .btn-blue { color: #fff; background-color: #227efa; background-image: linear-gradient(#4593fb, #227efa); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -html.dark-mode .btn-blue:hover, html.dark-mode .btn-blue.zeroclipboard-is-hover { color: #fff; background-color: #1878fa; background-image: linear-gradient(#368afa, #1878fa); } - -html.dark-mode .btn-blue:active, html.dark-mode .btn-blue.selected, html.dark-mode .btn-blue.zeroclipboard-is-active { background-color: #1375f9; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -html.dark-mode .btn-blue.selected:hover { background-color: #0669ed; } - -html.dark-mode .btn-green { color: #fff; background-color: #10ac7d; background-image: linear-gradient(#13cc95, #10ac7d); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); } - -html.dark-mode .btn-green:hover, html.dark-mode .btn-green.zeroclipboard-is-hover { color: #fff; background-color: #0fa276; background-image: linear-gradient(#12be8b, #0fa276); } - -html.dark-mode .btn-green:active, html.dark-mode .btn-green.selected, html.dark-mode .btn-green.zeroclipboard-is-active { background-color: #0f9e73; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); } - -html.dark-mode .btn-green.selected:hover { background-color: #0d8662; } - -html.dark-mode .btn-reset { background: none; border: none; margin: 0; text-align: inherit; font: inherit; border-radius: 0; appearance: none; } - -html.dark-mode .search { position: relative; z-index: 2; flex-grow: 1; height: 4rem; padding: 0.5rem; transition: padding linear 200ms; } - -@media (min-width: 50rem) { html.dark-mode .search { position: relative !important; width: auto !important; height: 100% !important; padding: 0; transition: none; } } - -html.dark-mode .search-input-wrap { position: relative; z-index: 1; height: 3rem; overflow: hidden; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); transition: height linear 200ms; } - -@media (min-width: 50rem) { html.dark-mode .search-input-wrap { position: absolute; width: 100%; max-width: 33.5rem; height: 100% !important; border-radius: 0; box-shadow: none; transition: width ease 400ms; } } - -html.dark-mode .search-input { position: absolute; width: 100%; height: 100%; padding: 0.5rem 1rem 0.5rem 2.5rem; font-size: 1rem; color: #e6e1e8; background-color: #302d36; border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; border-radius: 0; } - -@media (min-width: 50rem) { html.dark-mode .search-input { padding: 0.5rem 1rem 0.5rem 3.5rem; font-size: 0.875rem; background-color: #27262b; transition: padding-left linear 200ms; } } - -html.dark-mode .search-input:focus { outline: 0; } - -html.dark-mode .search-input:focus + .search-label .search-icon { color: #2c84fa; } - -html.dark-mode .search-label { position: absolute; display: flex; height: 100%; padding-left: 1rem; } - -@media (min-width: 50rem) { html.dark-mode .search-label { padding-left: 2rem; transition: padding-left linear 200ms; } } - -html.dark-mode .search-label .search-icon { width: 1.2rem; height: 1.2rem; align-self: center; color: #959396; } - -html.dark-mode .search-results { position: absolute; left: 0; display: none; width: 100%; max-height: calc(100% - 4rem); overflow-y: auto; background-color: #302d36; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } - -@media (min-width: 50rem) { html.dark-mode .search-results { top: 100%; width: 33.5rem; max-height: calc(100vh - 200%) !important; } } - -html.dark-mode .search-results-list { padding-left: 0; margin-bottom: 0.25rem; list-style: none; } - -html.dark-mode .search-results-list { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .search-results-list { font-size: 1rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .search-results-list { font-size: 0.75rem !important; } } - -@media (min-width: 50rem) and (min-width: 31.25rem) { html.dark-mode .search-results-list { font-size: 0.875rem !important; } } - -html.dark-mode .search-results-list-item { padding: 0; margin: 0; } - -html.dark-mode .search-result { display: block; padding: 0.25rem 0.75rem; } - -html.dark-mode .search-result:hover, html.dark-mode .search-result.active { background-color: #201f23; } - -html.dark-mode .search-result-title { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; } - -@media (min-width: 31.25rem) { html.dark-mode .search-result-title { display: inline-block; width: 40%; padding-right: 0.5rem; vertical-align: top; } } - -html.dark-mode .search-result-doc { display: flex; align-items: center; word-wrap: break-word; } - -html.dark-mode .search-result-doc.search-result-doc-parent { opacity: 0.5; } - -html.dark-mode .search-result-doc.search-result-doc-parent { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .search-result-doc.search-result-doc-parent { font-size: 0.875rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .search-result-doc.search-result-doc-parent { font-size: 0.6875rem !important; } } - -@media (min-width: 50rem) and (min-width: 31.25rem) { html.dark-mode .search-result-doc.search-result-doc-parent { font-size: 0.75rem !important; } } - -html.dark-mode .search-result-doc .search-result-icon { width: 1rem; height: 1rem; margin-right: 0.5rem; color: #2c84fa; flex-shrink: 0; } - -html.dark-mode .search-result-doc .search-result-doc-title { overflow: auto; } - -html.dark-mode .search-result-section { margin-left: 1.5rem; word-wrap: break-word; } - -html.dark-mode .search-result-rel-url { display: block; margin-left: 1.5rem; overflow: hidden; color: #959396; text-overflow: ellipsis; white-space: nowrap; } - -html.dark-mode .search-result-rel-url { font-size: 0.5625rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .search-result-rel-url { font-size: 0.625rem !important; } } - -html.dark-mode .search-result-previews { display: block; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; margin-left: 0.5rem; color: #959396; word-wrap: break-word; border-left: 1px solid; border-left-color: #44434d; } - -html.dark-mode .search-result-previews { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .search-result-previews { font-size: 0.75rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .search-result-previews { display: inline-block; width: 60%; padding-left: 0.5rem; margin-left: 0; vertical-align: top; } } - -html.dark-mode .search-result-preview + .search-result-preview { margin-top: 0.25rem; } - -html.dark-mode .search-result-highlight { font-weight: bold; } - -html.dark-mode .search-no-result { padding: 0.5rem 0.75rem; } - -html.dark-mode .search-no-result { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .search-no-result { font-size: 0.875rem !important; } } - -html.dark-mode .search-button { position: fixed; right: 1rem; bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; background-color: #302d36; border: 1px solid rgba(44, 132, 250, 0.3); border-radius: 1.75rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); align-items: center; justify-content: center; } - -html.dark-mode .search-overlay { position: fixed; top: 0; left: 0; z-index: 1; width: 0; height: 0; background-color: rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity ease 400ms, width 0s 400ms, height 0s 400ms; } - -html.dark-mode .search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } - -html.dark-mode .search-active .search-input-wrap { height: 4rem; border-radius: 0; } - -@media (min-width: 50rem) { html.dark-mode .search-active .search-input-wrap { width: 33.5rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } - -html.dark-mode .search-active .search-input { background-color: #302d36; } - -@media (min-width: 50rem) { html.dark-mode .search-active .search-input { padding-left: 2.3rem; } } - -@media (min-width: 50rem) { html.dark-mode .search-active .search-label { padding-left: 0.6rem; } } - -html.dark-mode .search-active .search-results { display: block; } - -html.dark-mode .search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } - -@media (min-width: 50rem) { html.dark-mode .search-active .main { position: fixed; right: 0; left: 0; } } - -html.dark-mode .search-active .main-header { padding-top: 4rem; } - -@media (min-width: 50rem) { html.dark-mode .search-active .main-header { padding-top: 0; } } - -html.dark-mode .table-wrapper { display: block; width: 100%; max-width: 100%; margin-bottom: 1.5rem; overflow-x: auto; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } - -html.dark-mode table { display: table; min-width: 100%; border-collapse: separate; } - -html.dark-mode th, html.dark-mode td { min-width: 7.5rem; padding: 0.5rem 0.75rem; background-color: #302d36; border-bottom: 1px solid rgba(68, 67, 77, 0.5); border-left: 1px solid #44434d; } - -html.dark-mode th, html.dark-mode td { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode th, html.dark-mode td { font-size: 0.875rem !important; } } - -html.dark-mode th:first-of-type, html.dark-mode td:first-of-type { border-left: 0; } - -html.dark-mode tbody tr:last-of-type th, html.dark-mode tbody tr:last-of-type td { border-bottom: 0; } - -html.dark-mode tbody tr:last-of-type td { padding-bottom: 0.75rem; } - -html.dark-mode thead th { border-bottom: 1px solid #44434d; } - -html.dark-mode :not(pre, figure) > code { padding: 0.15em 0.12em; font-weight: 400; background-color: #31343f; border: 1px solid #44434d; border-radius: 4px; } - -html.dark-mode a:visited code { border-color: #44434d; } - -html.dark-mode div.highlighter-rouge, html.dark-mode div.listingblock > div.content, html.dark-mode figure.highlight { margin-top: 0; margin-bottom: 0.75rem; background-color: #31343f; border-radius: 4px; box-shadow: none; -webkit-overflow-scrolling: touch; position: relative; padding: 0; } - -html.dark-mode div.highlighter-rouge > button, html.dark-mode div.listingblock > div.content > button, html.dark-mode figure.highlight > button { width: 0.75rem; opacity: 0; position: absolute; top: 0; right: 0; border: 0.75rem solid #31343f; background-color: #31343f; color: #e6e1e8; box-sizing: content-box; } - -html.dark-mode div.highlighter-rouge > button svg, html.dark-mode div.listingblock > div.content > button svg, html.dark-mode figure.highlight > button svg { fill: #e6e1e8; } - -html.dark-mode div.highlighter-rouge > button:active, html.dark-mode div.listingblock > div.content > button:active, html.dark-mode figure.highlight > button:active { text-decoration: none; outline: none; opacity: 1; } - -html.dark-mode div.highlighter-rouge > button:focus, html.dark-mode div.listingblock > div.content > button:focus, html.dark-mode figure.highlight > button:focus { opacity: 1; } - -html.dark-mode div.highlighter-rouge:hover > button, html.dark-mode div.listingblock > div.content:hover > button, html.dark-mode figure.highlight:hover > button { cursor: copy; opacity: 1; } - -html.dark-mode div.highlighter-rouge div.highlight { overflow-x: auto; padding: 0.75rem; margin: 0; border: 0; } - -html.dark-mode div.highlighter-rouge pre.highlight, html.dark-mode div.highlighter-rouge code { padding: 0; margin: 0; border: 0; } - -html.dark-mode div.listingblock { margin-top: 0; margin-bottom: 0.75rem; } - -html.dark-mode div.listingblock div.content { overflow-x: auto; padding: 0.75rem; margin: 0; border: 0; } - -html.dark-mode div.listingblock div.content > pre, html.dark-mode div.listingblock code { padding: 0; margin: 0; border: 0; } - -html.dark-mode figure.highlight pre, html.dark-mode figure.highlight :not(pre) > code { overflow-x: auto; padding: 0.75rem; margin: 0; border: 0; } - -html.dark-mode .highlight .table-wrapper { padding: 0.75rem 0; margin: 0; border: 0; box-shadow: none; } - -html.dark-mode .highlight .table-wrapper td, html.dark-mode .highlight .table-wrapper pre { min-width: 0; padding: 0; background-color: #31343f; border: 0; } - -html.dark-mode .highlight .table-wrapper td, html.dark-mode .highlight .table-wrapper pre { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .highlight .table-wrapper td, html.dark-mode .highlight .table-wrapper pre { font-size: 0.75rem !important; } } - -html.dark-mode .highlight .table-wrapper td.gl { width: 1em; padding-right: 0.75rem; padding-left: 0.75rem; } - -html.dark-mode .highlight .table-wrapper pre { margin: 0; line-height: 2; } - -html.dark-mode .code-example, html.dark-mode .listingblock > .title { padding: 0.75rem; margin-bottom: 0.75rem; overflow: auto; border: 1px solid #44434d; border-radius: 4px; } - -html.dark-mode .code-example + .highlighter-rouge, html.dark-mode .code-example + .sectionbody .listingblock, html.dark-mode .code-example + .content, html.dark-mode .code-example + figure.highlight, html.dark-mode .listingblock > .title + .highlighter-rouge, html.dark-mode .listingblock > .title + .sectionbody .listingblock, html.dark-mode .listingblock > .title + .content, html.dark-mode .listingblock > .title + figure.highlight { position: relative; margin-top: -1rem; border-right: 1px solid #44434d; border-bottom: 1px solid #44434d; border-left: 1px solid #44434d; border-top-left-radius: 0; border-top-right-radius: 0; } - -html.dark-mode code.language-mermaid { padding: 0; background-color: inherit; border: 0; } - -html.dark-mode .highlight, html.dark-mode pre.highlight { background: #31343f; color: #dee2f7; } - -html.dark-mode .highlight pre { background: #31343f; } - -html.dark-mode .text-grey-dk-000 { color: #959396 !important; } - -html.dark-mode .text-grey-dk-100 { color: #5c5962 !important; } - -html.dark-mode .text-grey-dk-200 { color: #44434d !important; } - -html.dark-mode .text-grey-dk-250 { color: #302d36 !important; } - -html.dark-mode .text-grey-dk-300 { color: #27262b !important; } - -html.dark-mode .text-grey-lt-000 { color: #f5f6fa !important; } - -html.dark-mode .text-grey-lt-100 { color: #eeebee !important; } - -html.dark-mode .text-grey-lt-200 { color: #ecebed !important; } - -html.dark-mode .text-grey-lt-300 { color: #e6e1e8 !important; } - -html.dark-mode .text-blue-000 { color: #2c84fa !important; } - -html.dark-mode .text-blue-100 { color: #2869e6 !important; } - -html.dark-mode .text-blue-200 { color: #264caf !important; } - -html.dark-mode .text-blue-300 { color: #183385 !important; } - -html.dark-mode .text-green-000 { color: #41d693 !important; } - -html.dark-mode .text-green-100 { color: #11b584 !important; } - -html.dark-mode .text-green-200 { color: #009c7b !important; } - -html.dark-mode .text-green-300 { color: #026e57 !important; } - -html.dark-mode .text-purple-000 { color: #7253ed !important; } - -html.dark-mode .text-purple-100 { color: #5e41d0 !important; } - -html.dark-mode .text-purple-200 { color: #4e26af !important; } - -html.dark-mode .text-purple-300 { color: #381885 !important; } - -html.dark-mode .text-yellow-000 { color: #ffeb82 !important; } - -html.dark-mode .text-yellow-100 { color: #fadf50 !important; } - -html.dark-mode .text-yellow-200 { color: #f7d12e !important; } - -html.dark-mode .text-yellow-300 { color: #e7af06 !important; } - -html.dark-mode .text-red-000 { color: #f77e7e !important; } - -html.dark-mode .text-red-100 { color: #f96e65 !important; } - -html.dark-mode .text-red-200 { color: #e94c4c !important; } - -html.dark-mode .text-red-300 { color: #dd2e2e !important; } - -html.dark-mode .bg-grey-dk-000 { background-color: #959396 !important; } - -html.dark-mode .bg-grey-dk-100 { background-color: #5c5962 !important; } - -html.dark-mode .bg-grey-dk-200 { background-color: #44434d !important; } - -html.dark-mode .bg-grey-dk-250 { background-color: #302d36 !important; } - -html.dark-mode .bg-grey-dk-300 { background-color: #27262b !important; } - -html.dark-mode .bg-grey-lt-000 { background-color: #f5f6fa !important; } - -html.dark-mode .bg-grey-lt-100 { background-color: #eeebee !important; } - -html.dark-mode .bg-grey-lt-200 { background-color: #ecebed !important; } - -html.dark-mode .bg-grey-lt-300 { background-color: #e6e1e8 !important; } - -html.dark-mode .bg-blue-000 { background-color: #2c84fa !important; } - -html.dark-mode .bg-blue-100 { background-color: #2869e6 !important; } - -html.dark-mode .bg-blue-200 { background-color: #264caf !important; } - -html.dark-mode .bg-blue-300 { background-color: #183385 !important; } - -html.dark-mode .bg-green-000 { background-color: #41d693 !important; } - -html.dark-mode .bg-green-100 { background-color: #11b584 !important; } - -html.dark-mode .bg-green-200 { background-color: #009c7b !important; } - -html.dark-mode .bg-green-300 { background-color: #026e57 !important; } - -html.dark-mode .bg-purple-000 { background-color: #7253ed !important; } - -html.dark-mode .bg-purple-100 { background-color: #5e41d0 !important; } - -html.dark-mode .bg-purple-200 { background-color: #4e26af !important; } - -html.dark-mode .bg-purple-300 { background-color: #381885 !important; } - -html.dark-mode .bg-yellow-000 { background-color: #ffeb82 !important; } - -html.dark-mode .bg-yellow-100 { background-color: #fadf50 !important; } - -html.dark-mode .bg-yellow-200 { background-color: #f7d12e !important; } - -html.dark-mode .bg-yellow-300 { background-color: #e7af06 !important; } - -html.dark-mode .bg-red-000 { background-color: #f77e7e !important; } - -html.dark-mode .bg-red-100 { background-color: #f96e65 !important; } - -html.dark-mode .bg-red-200 { background-color: #e94c4c !important; } - -html.dark-mode .bg-red-300 { background-color: #dd2e2e !important; } - -html.dark-mode .d-block { display: block !important; } - -html.dark-mode .d-flex { display: flex !important; } - -html.dark-mode .d-inline { display: inline !important; } - -html.dark-mode .d-inline-block { display: inline-block !important; } - -html.dark-mode .d-none { display: none !important; } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 20rem) { html.dark-mode .d-xs-block { display: block !important; } html.dark-mode .d-xs-flex { display: flex !important; } html.dark-mode .d-xs-inline { display: inline !important; } html.dark-mode .d-xs-inline-block { display: inline-block !important; } html.dark-mode .d-xs-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .d-sm-block { display: block !important; } html.dark-mode .d-sm-flex { display: flex !important; } html.dark-mode .d-sm-inline { display: inline !important; } html.dark-mode .d-sm-inline-block { display: inline-block !important; } html.dark-mode .d-sm-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 50rem) { html.dark-mode .d-md-block { display: block !important; } html.dark-mode .d-md-flex { display: flex !important; } html.dark-mode .d-md-inline { display: inline !important; } html.dark-mode .d-md-inline-block { display: inline-block !important; } html.dark-mode .d-md-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .d-lg-block { display: block !important; } html.dark-mode .d-lg-flex { display: flex !important; } html.dark-mode .d-lg-inline { display: inline !important; } html.dark-mode .d-lg-inline-block { display: inline-block !important; } html.dark-mode .d-lg-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .d-xl-block { display: block !important; } html.dark-mode .d-xl-flex { display: flex !important; } html.dark-mode .d-xl-inline { display: inline !important; } html.dark-mode .d-xl-inline-block { display: inline-block !important; } html.dark-mode .d-xl-none { display: none !important; } } - -html.dark-mode .float-left { float: left !important; } - -html.dark-mode .float-right { float: right !important; } - -html.dark-mode .flex-justify-start { justify-content: flex-start !important; } - -html.dark-mode .flex-justify-end { justify-content: flex-end !important; } - -html.dark-mode .flex-justify-between { justify-content: space-between !important; } - -html.dark-mode .flex-justify-around { justify-content: space-around !important; } - -html.dark-mode .v-align-baseline { vertical-align: baseline !important; } - -html.dark-mode .v-align-bottom { vertical-align: bottom !important; } - -html.dark-mode .v-align-middle { vertical-align: middle !important; } - -html.dark-mode .v-align-text-bottom { vertical-align: text-bottom !important; } - -html.dark-mode .v-align-text-top { vertical-align: text-top !important; } - -html.dark-mode .v-align-top { vertical-align: top !important; } - -html.dark-mode .fs-1 { font-size: 0.5625rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-1 { font-size: 0.625rem !important; } } - -html.dark-mode .fs-2 { font-size: 0.6875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-2 { font-size: 0.75rem !important; } } - -html.dark-mode .fs-3 { font-size: 0.75rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-3 { font-size: 0.875rem !important; } } - -html.dark-mode .fs-4 { font-size: 0.875rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-4 { font-size: 1rem !important; } } - -html.dark-mode .fs-5 { font-size: 1rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-5 { font-size: 1.125rem !important; } } - -html.dark-mode .fs-6 { font-size: 1.125rem !important; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-6 { font-size: 1.5rem !important; line-height: 1.25; } } - -html.dark-mode .fs-7 { font-size: 1.5rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-7 { font-size: 2rem !important; } } - -html.dark-mode .fs-8 { font-size: 2rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-8 { font-size: 2.25rem !important; } } - -html.dark-mode .fs-9 { font-size: 2.25rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-9 { font-size: 2.625rem !important; } } - -html.dark-mode .fs-10 { font-size: 2.625rem !important; line-height: 1.25; } - -@media (min-width: 31.25rem) { html.dark-mode .fs-10 { font-size: 3rem !important; } } - -html.dark-mode .fw-300 { font-weight: 300 !important; } - -html.dark-mode .fw-400 { font-weight: 400 !important; } - -html.dark-mode .fw-500 { font-weight: 500 !important; } - -html.dark-mode .fw-700 { font-weight: 700 !important; } - -html.dark-mode .lh-0 { line-height: 0 !important; } - -html.dark-mode .lh-default { line-height: 1.4; } - -html.dark-mode .lh-tight { line-height: 1.25; } - -html.dark-mode .ls-5 { letter-spacing: 0.05em !important; } - -html.dark-mode .ls-10 { letter-spacing: 0.1em !important; } - -html.dark-mode .ls-0 { letter-spacing: 0 !important; } - -html.dark-mode .text-uppercase { text-transform: uppercase !important; } - -html.dark-mode .list-style-none { padding: 0 !important; margin: 0 !important; list-style: none !important; } - -html.dark-mode .list-style-none li::before { display: none !important; } - -html.dark-mode .mx-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-0 { margin: 0 !important; } - -html.dark-mode .mt-0 { margin-top: 0 !important; } - -html.dark-mode .mr-0 { margin-right: 0 !important; } - -html.dark-mode .mb-0 { margin-bottom: 0 !important; } - -html.dark-mode .ml-0 { margin-left: 0 !important; } - -html.dark-mode .mx-0 { margin-right: 0 !important; margin-left: 0 !important; } - -html.dark-mode .my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } - -html.dark-mode .mxn-0 { margin-right: -0 !important; margin-left: -0 !important; } - -html.dark-mode .mx-0-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-1 { margin: 0.25rem !important; } - -html.dark-mode .mt-1 { margin-top: 0.25rem !important; } - -html.dark-mode .mr-1 { margin-right: 0.25rem !important; } - -html.dark-mode .mb-1 { margin-bottom: 0.25rem !important; } - -html.dark-mode .ml-1 { margin-left: 0.25rem !important; } - -html.dark-mode .mx-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } - -html.dark-mode .my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } - -html.dark-mode .mxn-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } - -html.dark-mode .mx-1-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-2 { margin: 0.5rem !important; } - -html.dark-mode .mt-2 { margin-top: 0.5rem !important; } - -html.dark-mode .mr-2 { margin-right: 0.5rem !important; } - -html.dark-mode .mb-2 { margin-bottom: 0.5rem !important; } - -html.dark-mode .ml-2 { margin-left: 0.5rem !important; } - -html.dark-mode .mx-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } - -html.dark-mode .my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } - -html.dark-mode .mxn-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } - -html.dark-mode .mx-2-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-3 { margin: 0.75rem !important; } - -html.dark-mode .mt-3 { margin-top: 0.75rem !important; } - -html.dark-mode .mr-3 { margin-right: 0.75rem !important; } - -html.dark-mode .mb-3 { margin-bottom: 0.75rem !important; } - -html.dark-mode .ml-3 { margin-left: 0.75rem !important; } - -html.dark-mode .mx-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } - -html.dark-mode .my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } - -html.dark-mode .mxn-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } - -html.dark-mode .mx-3-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-4 { margin: 1rem !important; } - -html.dark-mode .mt-4 { margin-top: 1rem !important; } - -html.dark-mode .mr-4 { margin-right: 1rem !important; } - -html.dark-mode .mb-4 { margin-bottom: 1rem !important; } - -html.dark-mode .ml-4 { margin-left: 1rem !important; } - -html.dark-mode .mx-4 { margin-right: 1rem !important; margin-left: 1rem !important; } - -html.dark-mode .my-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } - -html.dark-mode .mxn-4 { margin-right: -1rem !important; margin-left: -1rem !important; } - -html.dark-mode .mx-4-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-5 { margin: 1.5rem !important; } - -html.dark-mode .mt-5 { margin-top: 1.5rem !important; } - -html.dark-mode .mr-5 { margin-right: 1.5rem !important; } - -html.dark-mode .mb-5 { margin-bottom: 1.5rem !important; } - -html.dark-mode .ml-5 { margin-left: 1.5rem !important; } - -html.dark-mode .mx-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } - -html.dark-mode .my-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } - -html.dark-mode .mxn-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } - -html.dark-mode .mx-5-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-6 { margin: 2rem !important; } - -html.dark-mode .mt-6 { margin-top: 2rem !important; } - -html.dark-mode .mr-6 { margin-right: 2rem !important; } - -html.dark-mode .mb-6 { margin-bottom: 2rem !important; } - -html.dark-mode .ml-6 { margin-left: 2rem !important; } - -html.dark-mode .mx-6 { margin-right: 2rem !important; margin-left: 2rem !important; } - -html.dark-mode .my-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } - -html.dark-mode .mxn-6 { margin-right: -2rem !important; margin-left: -2rem !important; } - -html.dark-mode .mx-6-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-7 { margin: 2.5rem !important; } - -html.dark-mode .mt-7 { margin-top: 2.5rem !important; } - -html.dark-mode .mr-7 { margin-right: 2.5rem !important; } - -html.dark-mode .mb-7 { margin-bottom: 2.5rem !important; } - -html.dark-mode .ml-7 { margin-left: 2.5rem !important; } - -html.dark-mode .mx-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } - -html.dark-mode .my-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } - -html.dark-mode .mxn-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } - -html.dark-mode .mx-7-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-8 { margin: 3rem !important; } - -html.dark-mode .mt-8 { margin-top: 3rem !important; } - -html.dark-mode .mr-8 { margin-right: 3rem !important; } - -html.dark-mode .mb-8 { margin-bottom: 3rem !important; } - -html.dark-mode .ml-8 { margin-left: 3rem !important; } - -html.dark-mode .mx-8 { margin-right: 3rem !important; margin-left: 3rem !important; } - -html.dark-mode .my-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } - -html.dark-mode .mxn-8 { margin-right: -3rem !important; margin-left: -3rem !important; } - -html.dark-mode .mx-8-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-9 { margin: 3.5rem !important; } - -html.dark-mode .mt-9 { margin-top: 3.5rem !important; } - -html.dark-mode .mr-9 { margin-right: 3.5rem !important; } - -html.dark-mode .mb-9 { margin-bottom: 3.5rem !important; } - -html.dark-mode .ml-9 { margin-left: 3.5rem !important; } - -html.dark-mode .mx-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } - -html.dark-mode .my-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } - -html.dark-mode .mxn-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } - -html.dark-mode .mx-9-auto { margin-right: auto !important; margin-left: auto !important; } - -html.dark-mode .m-10 { margin: 4rem !important; } - -html.dark-mode .mt-10 { margin-top: 4rem !important; } - -html.dark-mode .mr-10 { margin-right: 4rem !important; } - -html.dark-mode .mb-10 { margin-bottom: 4rem !important; } - -html.dark-mode .ml-10 { margin-left: 4rem !important; } - -html.dark-mode .mx-10 { margin-right: 4rem !important; margin-left: 4rem !important; } - -html.dark-mode .my-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } - -html.dark-mode .mxn-10 { margin-right: -4rem !important; margin-left: -4rem !important; } - -html.dark-mode .mx-10-auto { margin-right: auto !important; margin-left: auto !important; } - -@media (min-width: 20rem) { html.dark-mode .m-xs-0 { margin: 0 !important; } html.dark-mode .mt-xs-0 { margin-top: 0 !important; } html.dark-mode .mr-xs-0 { margin-right: 0 !important; } html.dark-mode .mb-xs-0 { margin-bottom: 0 !important; } html.dark-mode .ml-xs-0 { margin-left: 0 !important; } html.dark-mode .mx-xs-0 { margin-right: 0 !important; margin-left: 0 !important; } html.dark-mode .my-xs-0 { margin-top: 0 !important; margin-bottom: 0 !important; } html.dark-mode .mxn-xs-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-1 { margin: 0.25rem !important; } html.dark-mode .mt-xs-1 { margin-top: 0.25rem !important; } html.dark-mode .mr-xs-1 { margin-right: 0.25rem !important; } html.dark-mode .mb-xs-1 { margin-bottom: 0.25rem !important; } html.dark-mode .ml-xs-1 { margin-left: 0.25rem !important; } html.dark-mode .mx-xs-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } html.dark-mode .my-xs-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } html.dark-mode .mxn-xs-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-2 { margin: 0.5rem !important; } html.dark-mode .mt-xs-2 { margin-top: 0.5rem !important; } html.dark-mode .mr-xs-2 { margin-right: 0.5rem !important; } html.dark-mode .mb-xs-2 { margin-bottom: 0.5rem !important; } html.dark-mode .ml-xs-2 { margin-left: 0.5rem !important; } html.dark-mode .mx-xs-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } html.dark-mode .my-xs-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } html.dark-mode .mxn-xs-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-3 { margin: 0.75rem !important; } html.dark-mode .mt-xs-3 { margin-top: 0.75rem !important; } html.dark-mode .mr-xs-3 { margin-right: 0.75rem !important; } html.dark-mode .mb-xs-3 { margin-bottom: 0.75rem !important; } html.dark-mode .ml-xs-3 { margin-left: 0.75rem !important; } html.dark-mode .mx-xs-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } html.dark-mode .my-xs-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } html.dark-mode .mxn-xs-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-4 { margin: 1rem !important; } html.dark-mode .mt-xs-4 { margin-top: 1rem !important; } html.dark-mode .mr-xs-4 { margin-right: 1rem !important; } html.dark-mode .mb-xs-4 { margin-bottom: 1rem !important; } html.dark-mode .ml-xs-4 { margin-left: 1rem !important; } html.dark-mode .mx-xs-4 { margin-right: 1rem !important; margin-left: 1rem !important; } html.dark-mode .my-xs-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } html.dark-mode .mxn-xs-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-5 { margin: 1.5rem !important; } html.dark-mode .mt-xs-5 { margin-top: 1.5rem !important; } html.dark-mode .mr-xs-5 { margin-right: 1.5rem !important; } html.dark-mode .mb-xs-5 { margin-bottom: 1.5rem !important; } html.dark-mode .ml-xs-5 { margin-left: 1.5rem !important; } html.dark-mode .mx-xs-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } html.dark-mode .my-xs-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } html.dark-mode .mxn-xs-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-6 { margin: 2rem !important; } html.dark-mode .mt-xs-6 { margin-top: 2rem !important; } html.dark-mode .mr-xs-6 { margin-right: 2rem !important; } html.dark-mode .mb-xs-6 { margin-bottom: 2rem !important; } html.dark-mode .ml-xs-6 { margin-left: 2rem !important; } html.dark-mode .mx-xs-6 { margin-right: 2rem !important; margin-left: 2rem !important; } html.dark-mode .my-xs-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } html.dark-mode .mxn-xs-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-7 { margin: 2.5rem !important; } html.dark-mode .mt-xs-7 { margin-top: 2.5rem !important; } html.dark-mode .mr-xs-7 { margin-right: 2.5rem !important; } html.dark-mode .mb-xs-7 { margin-bottom: 2.5rem !important; } html.dark-mode .ml-xs-7 { margin-left: 2.5rem !important; } html.dark-mode .mx-xs-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } html.dark-mode .my-xs-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } html.dark-mode .mxn-xs-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-8 { margin: 3rem !important; } html.dark-mode .mt-xs-8 { margin-top: 3rem !important; } html.dark-mode .mr-xs-8 { margin-right: 3rem !important; } html.dark-mode .mb-xs-8 { margin-bottom: 3rem !important; } html.dark-mode .ml-xs-8 { margin-left: 3rem !important; } html.dark-mode .mx-xs-8 { margin-right: 3rem !important; margin-left: 3rem !important; } html.dark-mode .my-xs-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } html.dark-mode .mxn-xs-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-9 { margin: 3.5rem !important; } html.dark-mode .mt-xs-9 { margin-top: 3.5rem !important; } html.dark-mode .mr-xs-9 { margin-right: 3.5rem !important; } html.dark-mode .mb-xs-9 { margin-bottom: 3.5rem !important; } html.dark-mode .ml-xs-9 { margin-left: 3.5rem !important; } html.dark-mode .mx-xs-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } html.dark-mode .my-xs-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } html.dark-mode .mxn-xs-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 20rem) { html.dark-mode .m-xs-10 { margin: 4rem !important; } html.dark-mode .mt-xs-10 { margin-top: 4rem !important; } html.dark-mode .mr-xs-10 { margin-right: 4rem !important; } html.dark-mode .mb-xs-10 { margin-bottom: 4rem !important; } html.dark-mode .ml-xs-10 { margin-left: 4rem !important; } html.dark-mode .mx-xs-10 { margin-right: 4rem !important; margin-left: 4rem !important; } html.dark-mode .my-xs-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } html.dark-mode .mxn-xs-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-0 { margin: 0 !important; } html.dark-mode .mt-sm-0 { margin-top: 0 !important; } html.dark-mode .mr-sm-0 { margin-right: 0 !important; } html.dark-mode .mb-sm-0 { margin-bottom: 0 !important; } html.dark-mode .ml-sm-0 { margin-left: 0 !important; } html.dark-mode .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } html.dark-mode .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } html.dark-mode .mxn-sm-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-1 { margin: 0.25rem !important; } html.dark-mode .mt-sm-1 { margin-top: 0.25rem !important; } html.dark-mode .mr-sm-1 { margin-right: 0.25rem !important; } html.dark-mode .mb-sm-1 { margin-bottom: 0.25rem !important; } html.dark-mode .ml-sm-1 { margin-left: 0.25rem !important; } html.dark-mode .mx-sm-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } html.dark-mode .my-sm-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } html.dark-mode .mxn-sm-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-2 { margin: 0.5rem !important; } html.dark-mode .mt-sm-2 { margin-top: 0.5rem !important; } html.dark-mode .mr-sm-2 { margin-right: 0.5rem !important; } html.dark-mode .mb-sm-2 { margin-bottom: 0.5rem !important; } html.dark-mode .ml-sm-2 { margin-left: 0.5rem !important; } html.dark-mode .mx-sm-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } html.dark-mode .my-sm-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } html.dark-mode .mxn-sm-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-3 { margin: 0.75rem !important; } html.dark-mode .mt-sm-3 { margin-top: 0.75rem !important; } html.dark-mode .mr-sm-3 { margin-right: 0.75rem !important; } html.dark-mode .mb-sm-3 { margin-bottom: 0.75rem !important; } html.dark-mode .ml-sm-3 { margin-left: 0.75rem !important; } html.dark-mode .mx-sm-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } html.dark-mode .my-sm-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } html.dark-mode .mxn-sm-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-4 { margin: 1rem !important; } html.dark-mode .mt-sm-4 { margin-top: 1rem !important; } html.dark-mode .mr-sm-4 { margin-right: 1rem !important; } html.dark-mode .mb-sm-4 { margin-bottom: 1rem !important; } html.dark-mode .ml-sm-4 { margin-left: 1rem !important; } html.dark-mode .mx-sm-4 { margin-right: 1rem !important; margin-left: 1rem !important; } html.dark-mode .my-sm-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } html.dark-mode .mxn-sm-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-5 { margin: 1.5rem !important; } html.dark-mode .mt-sm-5 { margin-top: 1.5rem !important; } html.dark-mode .mr-sm-5 { margin-right: 1.5rem !important; } html.dark-mode .mb-sm-5 { margin-bottom: 1.5rem !important; } html.dark-mode .ml-sm-5 { margin-left: 1.5rem !important; } html.dark-mode .mx-sm-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } html.dark-mode .my-sm-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } html.dark-mode .mxn-sm-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-6 { margin: 2rem !important; } html.dark-mode .mt-sm-6 { margin-top: 2rem !important; } html.dark-mode .mr-sm-6 { margin-right: 2rem !important; } html.dark-mode .mb-sm-6 { margin-bottom: 2rem !important; } html.dark-mode .ml-sm-6 { margin-left: 2rem !important; } html.dark-mode .mx-sm-6 { margin-right: 2rem !important; margin-left: 2rem !important; } html.dark-mode .my-sm-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } html.dark-mode .mxn-sm-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-7 { margin: 2.5rem !important; } html.dark-mode .mt-sm-7 { margin-top: 2.5rem !important; } html.dark-mode .mr-sm-7 { margin-right: 2.5rem !important; } html.dark-mode .mb-sm-7 { margin-bottom: 2.5rem !important; } html.dark-mode .ml-sm-7 { margin-left: 2.5rem !important; } html.dark-mode .mx-sm-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } html.dark-mode .my-sm-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } html.dark-mode .mxn-sm-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-8 { margin: 3rem !important; } html.dark-mode .mt-sm-8 { margin-top: 3rem !important; } html.dark-mode .mr-sm-8 { margin-right: 3rem !important; } html.dark-mode .mb-sm-8 { margin-bottom: 3rem !important; } html.dark-mode .ml-sm-8 { margin-left: 3rem !important; } html.dark-mode .mx-sm-8 { margin-right: 3rem !important; margin-left: 3rem !important; } html.dark-mode .my-sm-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } html.dark-mode .mxn-sm-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-9 { margin: 3.5rem !important; } html.dark-mode .mt-sm-9 { margin-top: 3.5rem !important; } html.dark-mode .mr-sm-9 { margin-right: 3.5rem !important; } html.dark-mode .mb-sm-9 { margin-bottom: 3.5rem !important; } html.dark-mode .ml-sm-9 { margin-left: 3.5rem !important; } html.dark-mode .mx-sm-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } html.dark-mode .my-sm-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } html.dark-mode .mxn-sm-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .m-sm-10 { margin: 4rem !important; } html.dark-mode .mt-sm-10 { margin-top: 4rem !important; } html.dark-mode .mr-sm-10 { margin-right: 4rem !important; } html.dark-mode .mb-sm-10 { margin-bottom: 4rem !important; } html.dark-mode .ml-sm-10 { margin-left: 4rem !important; } html.dark-mode .mx-sm-10 { margin-right: 4rem !important; margin-left: 4rem !important; } html.dark-mode .my-sm-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } html.dark-mode .mxn-sm-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-0 { margin: 0 !important; } html.dark-mode .mt-md-0 { margin-top: 0 !important; } html.dark-mode .mr-md-0 { margin-right: 0 !important; } html.dark-mode .mb-md-0 { margin-bottom: 0 !important; } html.dark-mode .ml-md-0 { margin-left: 0 !important; } html.dark-mode .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } html.dark-mode .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } html.dark-mode .mxn-md-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-1 { margin: 0.25rem !important; } html.dark-mode .mt-md-1 { margin-top: 0.25rem !important; } html.dark-mode .mr-md-1 { margin-right: 0.25rem !important; } html.dark-mode .mb-md-1 { margin-bottom: 0.25rem !important; } html.dark-mode .ml-md-1 { margin-left: 0.25rem !important; } html.dark-mode .mx-md-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } html.dark-mode .my-md-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } html.dark-mode .mxn-md-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-2 { margin: 0.5rem !important; } html.dark-mode .mt-md-2 { margin-top: 0.5rem !important; } html.dark-mode .mr-md-2 { margin-right: 0.5rem !important; } html.dark-mode .mb-md-2 { margin-bottom: 0.5rem !important; } html.dark-mode .ml-md-2 { margin-left: 0.5rem !important; } html.dark-mode .mx-md-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } html.dark-mode .my-md-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } html.dark-mode .mxn-md-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-3 { margin: 0.75rem !important; } html.dark-mode .mt-md-3 { margin-top: 0.75rem !important; } html.dark-mode .mr-md-3 { margin-right: 0.75rem !important; } html.dark-mode .mb-md-3 { margin-bottom: 0.75rem !important; } html.dark-mode .ml-md-3 { margin-left: 0.75rem !important; } html.dark-mode .mx-md-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } html.dark-mode .my-md-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } html.dark-mode .mxn-md-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-4 { margin: 1rem !important; } html.dark-mode .mt-md-4 { margin-top: 1rem !important; } html.dark-mode .mr-md-4 { margin-right: 1rem !important; } html.dark-mode .mb-md-4 { margin-bottom: 1rem !important; } html.dark-mode .ml-md-4 { margin-left: 1rem !important; } html.dark-mode .mx-md-4 { margin-right: 1rem !important; margin-left: 1rem !important; } html.dark-mode .my-md-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } html.dark-mode .mxn-md-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-5 { margin: 1.5rem !important; } html.dark-mode .mt-md-5 { margin-top: 1.5rem !important; } html.dark-mode .mr-md-5 { margin-right: 1.5rem !important; } html.dark-mode .mb-md-5 { margin-bottom: 1.5rem !important; } html.dark-mode .ml-md-5 { margin-left: 1.5rem !important; } html.dark-mode .mx-md-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } html.dark-mode .my-md-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } html.dark-mode .mxn-md-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-6 { margin: 2rem !important; } html.dark-mode .mt-md-6 { margin-top: 2rem !important; } html.dark-mode .mr-md-6 { margin-right: 2rem !important; } html.dark-mode .mb-md-6 { margin-bottom: 2rem !important; } html.dark-mode .ml-md-6 { margin-left: 2rem !important; } html.dark-mode .mx-md-6 { margin-right: 2rem !important; margin-left: 2rem !important; } html.dark-mode .my-md-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } html.dark-mode .mxn-md-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-7 { margin: 2.5rem !important; } html.dark-mode .mt-md-7 { margin-top: 2.5rem !important; } html.dark-mode .mr-md-7 { margin-right: 2.5rem !important; } html.dark-mode .mb-md-7 { margin-bottom: 2.5rem !important; } html.dark-mode .ml-md-7 { margin-left: 2.5rem !important; } html.dark-mode .mx-md-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } html.dark-mode .my-md-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } html.dark-mode .mxn-md-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-8 { margin: 3rem !important; } html.dark-mode .mt-md-8 { margin-top: 3rem !important; } html.dark-mode .mr-md-8 { margin-right: 3rem !important; } html.dark-mode .mb-md-8 { margin-bottom: 3rem !important; } html.dark-mode .ml-md-8 { margin-left: 3rem !important; } html.dark-mode .mx-md-8 { margin-right: 3rem !important; margin-left: 3rem !important; } html.dark-mode .my-md-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } html.dark-mode .mxn-md-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-9 { margin: 3.5rem !important; } html.dark-mode .mt-md-9 { margin-top: 3.5rem !important; } html.dark-mode .mr-md-9 { margin-right: 3.5rem !important; } html.dark-mode .mb-md-9 { margin-bottom: 3.5rem !important; } html.dark-mode .ml-md-9 { margin-left: 3.5rem !important; } html.dark-mode .mx-md-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } html.dark-mode .my-md-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } html.dark-mode .mxn-md-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .m-md-10 { margin: 4rem !important; } html.dark-mode .mt-md-10 { margin-top: 4rem !important; } html.dark-mode .mr-md-10 { margin-right: 4rem !important; } html.dark-mode .mb-md-10 { margin-bottom: 4rem !important; } html.dark-mode .ml-md-10 { margin-left: 4rem !important; } html.dark-mode .mx-md-10 { margin-right: 4rem !important; margin-left: 4rem !important; } html.dark-mode .my-md-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } html.dark-mode .mxn-md-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-0 { margin: 0 !important; } html.dark-mode .mt-lg-0 { margin-top: 0 !important; } html.dark-mode .mr-lg-0 { margin-right: 0 !important; } html.dark-mode .mb-lg-0 { margin-bottom: 0 !important; } html.dark-mode .ml-lg-0 { margin-left: 0 !important; } html.dark-mode .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } html.dark-mode .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } html.dark-mode .mxn-lg-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-1 { margin: 0.25rem !important; } html.dark-mode .mt-lg-1 { margin-top: 0.25rem !important; } html.dark-mode .mr-lg-1 { margin-right: 0.25rem !important; } html.dark-mode .mb-lg-1 { margin-bottom: 0.25rem !important; } html.dark-mode .ml-lg-1 { margin-left: 0.25rem !important; } html.dark-mode .mx-lg-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } html.dark-mode .my-lg-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } html.dark-mode .mxn-lg-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-2 { margin: 0.5rem !important; } html.dark-mode .mt-lg-2 { margin-top: 0.5rem !important; } html.dark-mode .mr-lg-2 { margin-right: 0.5rem !important; } html.dark-mode .mb-lg-2 { margin-bottom: 0.5rem !important; } html.dark-mode .ml-lg-2 { margin-left: 0.5rem !important; } html.dark-mode .mx-lg-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } html.dark-mode .my-lg-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } html.dark-mode .mxn-lg-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-3 { margin: 0.75rem !important; } html.dark-mode .mt-lg-3 { margin-top: 0.75rem !important; } html.dark-mode .mr-lg-3 { margin-right: 0.75rem !important; } html.dark-mode .mb-lg-3 { margin-bottom: 0.75rem !important; } html.dark-mode .ml-lg-3 { margin-left: 0.75rem !important; } html.dark-mode .mx-lg-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } html.dark-mode .my-lg-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } html.dark-mode .mxn-lg-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-4 { margin: 1rem !important; } html.dark-mode .mt-lg-4 { margin-top: 1rem !important; } html.dark-mode .mr-lg-4 { margin-right: 1rem !important; } html.dark-mode .mb-lg-4 { margin-bottom: 1rem !important; } html.dark-mode .ml-lg-4 { margin-left: 1rem !important; } html.dark-mode .mx-lg-4 { margin-right: 1rem !important; margin-left: 1rem !important; } html.dark-mode .my-lg-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } html.dark-mode .mxn-lg-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-5 { margin: 1.5rem !important; } html.dark-mode .mt-lg-5 { margin-top: 1.5rem !important; } html.dark-mode .mr-lg-5 { margin-right: 1.5rem !important; } html.dark-mode .mb-lg-5 { margin-bottom: 1.5rem !important; } html.dark-mode .ml-lg-5 { margin-left: 1.5rem !important; } html.dark-mode .mx-lg-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } html.dark-mode .my-lg-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } html.dark-mode .mxn-lg-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-6 { margin: 2rem !important; } html.dark-mode .mt-lg-6 { margin-top: 2rem !important; } html.dark-mode .mr-lg-6 { margin-right: 2rem !important; } html.dark-mode .mb-lg-6 { margin-bottom: 2rem !important; } html.dark-mode .ml-lg-6 { margin-left: 2rem !important; } html.dark-mode .mx-lg-6 { margin-right: 2rem !important; margin-left: 2rem !important; } html.dark-mode .my-lg-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } html.dark-mode .mxn-lg-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-7 { margin: 2.5rem !important; } html.dark-mode .mt-lg-7 { margin-top: 2.5rem !important; } html.dark-mode .mr-lg-7 { margin-right: 2.5rem !important; } html.dark-mode .mb-lg-7 { margin-bottom: 2.5rem !important; } html.dark-mode .ml-lg-7 { margin-left: 2.5rem !important; } html.dark-mode .mx-lg-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } html.dark-mode .my-lg-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } html.dark-mode .mxn-lg-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-8 { margin: 3rem !important; } html.dark-mode .mt-lg-8 { margin-top: 3rem !important; } html.dark-mode .mr-lg-8 { margin-right: 3rem !important; } html.dark-mode .mb-lg-8 { margin-bottom: 3rem !important; } html.dark-mode .ml-lg-8 { margin-left: 3rem !important; } html.dark-mode .mx-lg-8 { margin-right: 3rem !important; margin-left: 3rem !important; } html.dark-mode .my-lg-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } html.dark-mode .mxn-lg-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-9 { margin: 3.5rem !important; } html.dark-mode .mt-lg-9 { margin-top: 3.5rem !important; } html.dark-mode .mr-lg-9 { margin-right: 3.5rem !important; } html.dark-mode .mb-lg-9 { margin-bottom: 3.5rem !important; } html.dark-mode .ml-lg-9 { margin-left: 3.5rem !important; } html.dark-mode .mx-lg-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } html.dark-mode .my-lg-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } html.dark-mode .mxn-lg-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .m-lg-10 { margin: 4rem !important; } html.dark-mode .mt-lg-10 { margin-top: 4rem !important; } html.dark-mode .mr-lg-10 { margin-right: 4rem !important; } html.dark-mode .mb-lg-10 { margin-bottom: 4rem !important; } html.dark-mode .ml-lg-10 { margin-left: 4rem !important; } html.dark-mode .mx-lg-10 { margin-right: 4rem !important; margin-left: 4rem !important; } html.dark-mode .my-lg-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } html.dark-mode .mxn-lg-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-0 { margin: 0 !important; } html.dark-mode .mt-xl-0 { margin-top: 0 !important; } html.dark-mode .mr-xl-0 { margin-right: 0 !important; } html.dark-mode .mb-xl-0 { margin-bottom: 0 !important; } html.dark-mode .ml-xl-0 { margin-left: 0 !important; } html.dark-mode .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } html.dark-mode .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } html.dark-mode .mxn-xl-0 { margin-right: -0 !important; margin-left: -0 !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-1 { margin: 0.25rem !important; } html.dark-mode .mt-xl-1 { margin-top: 0.25rem !important; } html.dark-mode .mr-xl-1 { margin-right: 0.25rem !important; } html.dark-mode .mb-xl-1 { margin-bottom: 0.25rem !important; } html.dark-mode .ml-xl-1 { margin-left: 0.25rem !important; } html.dark-mode .mx-xl-1 { margin-right: 0.25rem !important; margin-left: 0.25rem !important; } html.dark-mode .my-xl-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; } html.dark-mode .mxn-xl-1 { margin-right: -0.25rem !important; margin-left: -0.25rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-2 { margin: 0.5rem !important; } html.dark-mode .mt-xl-2 { margin-top: 0.5rem !important; } html.dark-mode .mr-xl-2 { margin-right: 0.5rem !important; } html.dark-mode .mb-xl-2 { margin-bottom: 0.5rem !important; } html.dark-mode .ml-xl-2 { margin-left: 0.5rem !important; } html.dark-mode .mx-xl-2 { margin-right: 0.5rem !important; margin-left: 0.5rem !important; } html.dark-mode .my-xl-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } html.dark-mode .mxn-xl-2 { margin-right: -0.5rem !important; margin-left: -0.5rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-3 { margin: 0.75rem !important; } html.dark-mode .mt-xl-3 { margin-top: 0.75rem !important; } html.dark-mode .mr-xl-3 { margin-right: 0.75rem !important; } html.dark-mode .mb-xl-3 { margin-bottom: 0.75rem !important; } html.dark-mode .ml-xl-3 { margin-left: 0.75rem !important; } html.dark-mode .mx-xl-3 { margin-right: 0.75rem !important; margin-left: 0.75rem !important; } html.dark-mode .my-xl-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; } html.dark-mode .mxn-xl-3 { margin-right: -0.75rem !important; margin-left: -0.75rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-4 { margin: 1rem !important; } html.dark-mode .mt-xl-4 { margin-top: 1rem !important; } html.dark-mode .mr-xl-4 { margin-right: 1rem !important; } html.dark-mode .mb-xl-4 { margin-bottom: 1rem !important; } html.dark-mode .ml-xl-4 { margin-left: 1rem !important; } html.dark-mode .mx-xl-4 { margin-right: 1rem !important; margin-left: 1rem !important; } html.dark-mode .my-xl-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; } html.dark-mode .mxn-xl-4 { margin-right: -1rem !important; margin-left: -1rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-5 { margin: 1.5rem !important; } html.dark-mode .mt-xl-5 { margin-top: 1.5rem !important; } html.dark-mode .mr-xl-5 { margin-right: 1.5rem !important; } html.dark-mode .mb-xl-5 { margin-bottom: 1.5rem !important; } html.dark-mode .ml-xl-5 { margin-left: 1.5rem !important; } html.dark-mode .mx-xl-5 { margin-right: 1.5rem !important; margin-left: 1.5rem !important; } html.dark-mode .my-xl-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } html.dark-mode .mxn-xl-5 { margin-right: -1.5rem !important; margin-left: -1.5rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-6 { margin: 2rem !important; } html.dark-mode .mt-xl-6 { margin-top: 2rem !important; } html.dark-mode .mr-xl-6 { margin-right: 2rem !important; } html.dark-mode .mb-xl-6 { margin-bottom: 2rem !important; } html.dark-mode .ml-xl-6 { margin-left: 2rem !important; } html.dark-mode .mx-xl-6 { margin-right: 2rem !important; margin-left: 2rem !important; } html.dark-mode .my-xl-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; } html.dark-mode .mxn-xl-6 { margin-right: -2rem !important; margin-left: -2rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-7 { margin: 2.5rem !important; } html.dark-mode .mt-xl-7 { margin-top: 2.5rem !important; } html.dark-mode .mr-xl-7 { margin-right: 2.5rem !important; } html.dark-mode .mb-xl-7 { margin-bottom: 2.5rem !important; } html.dark-mode .ml-xl-7 { margin-left: 2.5rem !important; } html.dark-mode .mx-xl-7 { margin-right: 2.5rem !important; margin-left: 2.5rem !important; } html.dark-mode .my-xl-7 { margin-top: 2.5rem !important; margin-bottom: 2.5rem !important; } html.dark-mode .mxn-xl-7 { margin-right: -2.5rem !important; margin-left: -2.5rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-8 { margin: 3rem !important; } html.dark-mode .mt-xl-8 { margin-top: 3rem !important; } html.dark-mode .mr-xl-8 { margin-right: 3rem !important; } html.dark-mode .mb-xl-8 { margin-bottom: 3rem !important; } html.dark-mode .ml-xl-8 { margin-left: 3rem !important; } html.dark-mode .mx-xl-8 { margin-right: 3rem !important; margin-left: 3rem !important; } html.dark-mode .my-xl-8 { margin-top: 3rem !important; margin-bottom: 3rem !important; } html.dark-mode .mxn-xl-8 { margin-right: -3rem !important; margin-left: -3rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-9 { margin: 3.5rem !important; } html.dark-mode .mt-xl-9 { margin-top: 3.5rem !important; } html.dark-mode .mr-xl-9 { margin-right: 3.5rem !important; } html.dark-mode .mb-xl-9 { margin-bottom: 3.5rem !important; } html.dark-mode .ml-xl-9 { margin-left: 3.5rem !important; } html.dark-mode .mx-xl-9 { margin-right: 3.5rem !important; margin-left: 3.5rem !important; } html.dark-mode .my-xl-9 { margin-top: 3.5rem !important; margin-bottom: 3.5rem !important; } html.dark-mode .mxn-xl-9 { margin-right: -3.5rem !important; margin-left: -3.5rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .m-xl-10 { margin: 4rem !important; } html.dark-mode .mt-xl-10 { margin-top: 4rem !important; } html.dark-mode .mr-xl-10 { margin-right: 4rem !important; } html.dark-mode .mb-xl-10 { margin-bottom: 4rem !important; } html.dark-mode .ml-xl-10 { margin-left: 4rem !important; } html.dark-mode .mx-xl-10 { margin-right: 4rem !important; margin-left: 4rem !important; } html.dark-mode .my-xl-10 { margin-top: 4rem !important; margin-bottom: 4rem !important; } html.dark-mode .mxn-xl-10 { margin-right: -4rem !important; margin-left: -4rem !important; } } - -html.dark-mode .p-0 { padding: 0 !important; } - -html.dark-mode .pt-0 { padding-top: 0 !important; } - -html.dark-mode .pr-0 { padding-right: 0 !important; } - -html.dark-mode .pb-0 { padding-bottom: 0 !important; } - -html.dark-mode .pl-0 { padding-left: 0 !important; } - -html.dark-mode .px-0 { padding-right: 0 !important; padding-left: 0 !important; } - -html.dark-mode .py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } - -html.dark-mode .p-1 { padding: 0.25rem !important; } - -html.dark-mode .pt-1 { padding-top: 0.25rem !important; } - -html.dark-mode .pr-1 { padding-right: 0.25rem !important; } - -html.dark-mode .pb-1 { padding-bottom: 0.25rem !important; } - -html.dark-mode .pl-1 { padding-left: 0.25rem !important; } - -html.dark-mode .px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } - -html.dark-mode .py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } - -html.dark-mode .p-2 { padding: 0.5rem !important; } - -html.dark-mode .pt-2 { padding-top: 0.5rem !important; } - -html.dark-mode .pr-2 { padding-right: 0.5rem !important; } - -html.dark-mode .pb-2 { padding-bottom: 0.5rem !important; } - -html.dark-mode .pl-2 { padding-left: 0.5rem !important; } - -html.dark-mode .px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } - -html.dark-mode .py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } - -html.dark-mode .p-3 { padding: 0.75rem !important; } - -html.dark-mode .pt-3 { padding-top: 0.75rem !important; } - -html.dark-mode .pr-3 { padding-right: 0.75rem !important; } - -html.dark-mode .pb-3 { padding-bottom: 0.75rem !important; } - -html.dark-mode .pl-3 { padding-left: 0.75rem !important; } - -html.dark-mode .px-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } - -html.dark-mode .py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } - -html.dark-mode .p-4 { padding: 1rem !important; } - -html.dark-mode .pt-4 { padding-top: 1rem !important; } - -html.dark-mode .pr-4 { padding-right: 1rem !important; } - -html.dark-mode .pb-4 { padding-bottom: 1rem !important; } - -html.dark-mode .pl-4 { padding-left: 1rem !important; } - -html.dark-mode .px-4 { padding-right: 1rem !important; padding-left: 1rem !important; } - -html.dark-mode .py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } - -html.dark-mode .p-5 { padding: 1.5rem !important; } - -html.dark-mode .pt-5 { padding-top: 1.5rem !important; } - -html.dark-mode .pr-5 { padding-right: 1.5rem !important; } - -html.dark-mode .pb-5 { padding-bottom: 1.5rem !important; } - -html.dark-mode .pl-5 { padding-left: 1.5rem !important; } - -html.dark-mode .px-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } - -html.dark-mode .py-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } - -html.dark-mode .p-6 { padding: 2rem !important; } - -html.dark-mode .pt-6 { padding-top: 2rem !important; } - -html.dark-mode .pr-6 { padding-right: 2rem !important; } - -html.dark-mode .pb-6 { padding-bottom: 2rem !important; } - -html.dark-mode .pl-6 { padding-left: 2rem !important; } - -html.dark-mode .px-6 { padding-right: 2rem !important; padding-left: 2rem !important; } - -html.dark-mode .py-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } - -html.dark-mode .p-7 { padding: 2.5rem !important; } - -html.dark-mode .pt-7 { padding-top: 2.5rem !important; } - -html.dark-mode .pr-7 { padding-right: 2.5rem !important; } - -html.dark-mode .pb-7 { padding-bottom: 2.5rem !important; } - -html.dark-mode .pl-7 { padding-left: 2.5rem !important; } - -html.dark-mode .px-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } - -html.dark-mode .py-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } - -html.dark-mode .p-8 { padding: 3rem !important; } - -html.dark-mode .pt-8 { padding-top: 3rem !important; } - -html.dark-mode .pr-8 { padding-right: 3rem !important; } - -html.dark-mode .pb-8 { padding-bottom: 3rem !important; } - -html.dark-mode .pl-8 { padding-left: 3rem !important; } - -html.dark-mode .px-8 { padding-right: 3rem !important; padding-left: 3rem !important; } - -html.dark-mode .py-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } - -html.dark-mode .p-9 { padding: 3.5rem !important; } - -html.dark-mode .pt-9 { padding-top: 3.5rem !important; } - -html.dark-mode .pr-9 { padding-right: 3.5rem !important; } - -html.dark-mode .pb-9 { padding-bottom: 3.5rem !important; } - -html.dark-mode .pl-9 { padding-left: 3.5rem !important; } - -html.dark-mode .px-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } - -html.dark-mode .py-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } - -html.dark-mode .p-10 { padding: 4rem !important; } - -html.dark-mode .pt-10 { padding-top: 4rem !important; } - -html.dark-mode .pr-10 { padding-right: 4rem !important; } - -html.dark-mode .pb-10 { padding-bottom: 4rem !important; } - -html.dark-mode .pl-10 { padding-left: 4rem !important; } - -html.dark-mode .px-10 { padding-right: 4rem !important; padding-left: 4rem !important; } - -html.dark-mode .py-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } - -@media (min-width: 20rem) { html.dark-mode .p-xs-0 { padding: 0 !important; } html.dark-mode .pt-xs-0 { padding-top: 0 !important; } html.dark-mode .pr-xs-0 { padding-right: 0 !important; } html.dark-mode .pb-xs-0 { padding-bottom: 0 !important; } html.dark-mode .pl-xs-0 { padding-left: 0 !important; } html.dark-mode .px-xs-0 { padding-right: 0 !important; padding-left: 0 !important; } html.dark-mode .py-xs-0 { padding-top: 0 !important; padding-bottom: 0 !important; } html.dark-mode .p-xs-1 { padding: 0.25rem !important; } html.dark-mode .pt-xs-1 { padding-top: 0.25rem !important; } html.dark-mode .pr-xs-1 { padding-right: 0.25rem !important; } html.dark-mode .pb-xs-1 { padding-bottom: 0.25rem !important; } html.dark-mode .pl-xs-1 { padding-left: 0.25rem !important; } html.dark-mode .px-xs-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } html.dark-mode .py-xs-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } html.dark-mode .p-xs-2 { padding: 0.5rem !important; } html.dark-mode .pt-xs-2 { padding-top: 0.5rem !important; } html.dark-mode .pr-xs-2 { padding-right: 0.5rem !important; } html.dark-mode .pb-xs-2 { padding-bottom: 0.5rem !important; } html.dark-mode .pl-xs-2 { padding-left: 0.5rem !important; } html.dark-mode .px-xs-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } html.dark-mode .py-xs-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } html.dark-mode .p-xs-3 { padding: 0.75rem !important; } html.dark-mode .pt-xs-3 { padding-top: 0.75rem !important; } html.dark-mode .pr-xs-3 { padding-right: 0.75rem !important; } html.dark-mode .pb-xs-3 { padding-bottom: 0.75rem !important; } html.dark-mode .pl-xs-3 { padding-left: 0.75rem !important; } html.dark-mode .px-xs-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } html.dark-mode .py-xs-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } html.dark-mode .p-xs-4 { padding: 1rem !important; } html.dark-mode .pt-xs-4 { padding-top: 1rem !important; } html.dark-mode .pr-xs-4 { padding-right: 1rem !important; } html.dark-mode .pb-xs-4 { padding-bottom: 1rem !important; } html.dark-mode .pl-xs-4 { padding-left: 1rem !important; } html.dark-mode .px-xs-4 { padding-right: 1rem !important; padding-left: 1rem !important; } html.dark-mode .py-xs-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } html.dark-mode .p-xs-5 { padding: 1.5rem !important; } html.dark-mode .pt-xs-5 { padding-top: 1.5rem !important; } html.dark-mode .pr-xs-5 { padding-right: 1.5rem !important; } html.dark-mode .pb-xs-5 { padding-bottom: 1.5rem !important; } html.dark-mode .pl-xs-5 { padding-left: 1.5rem !important; } html.dark-mode .px-xs-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } html.dark-mode .py-xs-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } html.dark-mode .p-xs-6 { padding: 2rem !important; } html.dark-mode .pt-xs-6 { padding-top: 2rem !important; } html.dark-mode .pr-xs-6 { padding-right: 2rem !important; } html.dark-mode .pb-xs-6 { padding-bottom: 2rem !important; } html.dark-mode .pl-xs-6 { padding-left: 2rem !important; } html.dark-mode .px-xs-6 { padding-right: 2rem !important; padding-left: 2rem !important; } html.dark-mode .py-xs-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } html.dark-mode .p-xs-7 { padding: 2.5rem !important; } html.dark-mode .pt-xs-7 { padding-top: 2.5rem !important; } html.dark-mode .pr-xs-7 { padding-right: 2.5rem !important; } html.dark-mode .pb-xs-7 { padding-bottom: 2.5rem !important; } html.dark-mode .pl-xs-7 { padding-left: 2.5rem !important; } html.dark-mode .px-xs-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } html.dark-mode .py-xs-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } html.dark-mode .p-xs-8 { padding: 3rem !important; } html.dark-mode .pt-xs-8 { padding-top: 3rem !important; } html.dark-mode .pr-xs-8 { padding-right: 3rem !important; } html.dark-mode .pb-xs-8 { padding-bottom: 3rem !important; } html.dark-mode .pl-xs-8 { padding-left: 3rem !important; } html.dark-mode .px-xs-8 { padding-right: 3rem !important; padding-left: 3rem !important; } html.dark-mode .py-xs-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } html.dark-mode .p-xs-9 { padding: 3.5rem !important; } html.dark-mode .pt-xs-9 { padding-top: 3.5rem !important; } html.dark-mode .pr-xs-9 { padding-right: 3.5rem !important; } html.dark-mode .pb-xs-9 { padding-bottom: 3.5rem !important; } html.dark-mode .pl-xs-9 { padding-left: 3.5rem !important; } html.dark-mode .px-xs-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } html.dark-mode .py-xs-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } html.dark-mode .p-xs-10 { padding: 4rem !important; } html.dark-mode .pt-xs-10 { padding-top: 4rem !important; } html.dark-mode .pr-xs-10 { padding-right: 4rem !important; } html.dark-mode .pb-xs-10 { padding-bottom: 4rem !important; } html.dark-mode .pl-xs-10 { padding-left: 4rem !important; } html.dark-mode .px-xs-10 { padding-right: 4rem !important; padding-left: 4rem !important; } html.dark-mode .py-xs-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 31.25rem) { html.dark-mode .p-sm-0 { padding: 0 !important; } html.dark-mode .pt-sm-0 { padding-top: 0 !important; } html.dark-mode .pr-sm-0 { padding-right: 0 !important; } html.dark-mode .pb-sm-0 { padding-bottom: 0 !important; } html.dark-mode .pl-sm-0 { padding-left: 0 !important; } html.dark-mode .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } html.dark-mode .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } html.dark-mode .p-sm-1 { padding: 0.25rem !important; } html.dark-mode .pt-sm-1 { padding-top: 0.25rem !important; } html.dark-mode .pr-sm-1 { padding-right: 0.25rem !important; } html.dark-mode .pb-sm-1 { padding-bottom: 0.25rem !important; } html.dark-mode .pl-sm-1 { padding-left: 0.25rem !important; } html.dark-mode .px-sm-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } html.dark-mode .py-sm-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } html.dark-mode .p-sm-2 { padding: 0.5rem !important; } html.dark-mode .pt-sm-2 { padding-top: 0.5rem !important; } html.dark-mode .pr-sm-2 { padding-right: 0.5rem !important; } html.dark-mode .pb-sm-2 { padding-bottom: 0.5rem !important; } html.dark-mode .pl-sm-2 { padding-left: 0.5rem !important; } html.dark-mode .px-sm-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } html.dark-mode .py-sm-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } html.dark-mode .p-sm-3 { padding: 0.75rem !important; } html.dark-mode .pt-sm-3 { padding-top: 0.75rem !important; } html.dark-mode .pr-sm-3 { padding-right: 0.75rem !important; } html.dark-mode .pb-sm-3 { padding-bottom: 0.75rem !important; } html.dark-mode .pl-sm-3 { padding-left: 0.75rem !important; } html.dark-mode .px-sm-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } html.dark-mode .py-sm-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } html.dark-mode .p-sm-4 { padding: 1rem !important; } html.dark-mode .pt-sm-4 { padding-top: 1rem !important; } html.dark-mode .pr-sm-4 { padding-right: 1rem !important; } html.dark-mode .pb-sm-4 { padding-bottom: 1rem !important; } html.dark-mode .pl-sm-4 { padding-left: 1rem !important; } html.dark-mode .px-sm-4 { padding-right: 1rem !important; padding-left: 1rem !important; } html.dark-mode .py-sm-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } html.dark-mode .p-sm-5 { padding: 1.5rem !important; } html.dark-mode .pt-sm-5 { padding-top: 1.5rem !important; } html.dark-mode .pr-sm-5 { padding-right: 1.5rem !important; } html.dark-mode .pb-sm-5 { padding-bottom: 1.5rem !important; } html.dark-mode .pl-sm-5 { padding-left: 1.5rem !important; } html.dark-mode .px-sm-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } html.dark-mode .py-sm-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } html.dark-mode .p-sm-6 { padding: 2rem !important; } html.dark-mode .pt-sm-6 { padding-top: 2rem !important; } html.dark-mode .pr-sm-6 { padding-right: 2rem !important; } html.dark-mode .pb-sm-6 { padding-bottom: 2rem !important; } html.dark-mode .pl-sm-6 { padding-left: 2rem !important; } html.dark-mode .px-sm-6 { padding-right: 2rem !important; padding-left: 2rem !important; } html.dark-mode .py-sm-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } html.dark-mode .p-sm-7 { padding: 2.5rem !important; } html.dark-mode .pt-sm-7 { padding-top: 2.5rem !important; } html.dark-mode .pr-sm-7 { padding-right: 2.5rem !important; } html.dark-mode .pb-sm-7 { padding-bottom: 2.5rem !important; } html.dark-mode .pl-sm-7 { padding-left: 2.5rem !important; } html.dark-mode .px-sm-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } html.dark-mode .py-sm-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } html.dark-mode .p-sm-8 { padding: 3rem !important; } html.dark-mode .pt-sm-8 { padding-top: 3rem !important; } html.dark-mode .pr-sm-8 { padding-right: 3rem !important; } html.dark-mode .pb-sm-8 { padding-bottom: 3rem !important; } html.dark-mode .pl-sm-8 { padding-left: 3rem !important; } html.dark-mode .px-sm-8 { padding-right: 3rem !important; padding-left: 3rem !important; } html.dark-mode .py-sm-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } html.dark-mode .p-sm-9 { padding: 3.5rem !important; } html.dark-mode .pt-sm-9 { padding-top: 3.5rem !important; } html.dark-mode .pr-sm-9 { padding-right: 3.5rem !important; } html.dark-mode .pb-sm-9 { padding-bottom: 3.5rem !important; } html.dark-mode .pl-sm-9 { padding-left: 3.5rem !important; } html.dark-mode .px-sm-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } html.dark-mode .py-sm-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } html.dark-mode .p-sm-10 { padding: 4rem !important; } html.dark-mode .pt-sm-10 { padding-top: 4rem !important; } html.dark-mode .pr-sm-10 { padding-right: 4rem !important; } html.dark-mode .pb-sm-10 { padding-bottom: 4rem !important; } html.dark-mode .pl-sm-10 { padding-left: 4rem !important; } html.dark-mode .px-sm-10 { padding-right: 4rem !important; padding-left: 4rem !important; } html.dark-mode .py-sm-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 50rem) { html.dark-mode .p-md-0 { padding: 0 !important; } html.dark-mode .pt-md-0 { padding-top: 0 !important; } html.dark-mode .pr-md-0 { padding-right: 0 !important; } html.dark-mode .pb-md-0 { padding-bottom: 0 !important; } html.dark-mode .pl-md-0 { padding-left: 0 !important; } html.dark-mode .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } html.dark-mode .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } html.dark-mode .p-md-1 { padding: 0.25rem !important; } html.dark-mode .pt-md-1 { padding-top: 0.25rem !important; } html.dark-mode .pr-md-1 { padding-right: 0.25rem !important; } html.dark-mode .pb-md-1 { padding-bottom: 0.25rem !important; } html.dark-mode .pl-md-1 { padding-left: 0.25rem !important; } html.dark-mode .px-md-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } html.dark-mode .py-md-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } html.dark-mode .p-md-2 { padding: 0.5rem !important; } html.dark-mode .pt-md-2 { padding-top: 0.5rem !important; } html.dark-mode .pr-md-2 { padding-right: 0.5rem !important; } html.dark-mode .pb-md-2 { padding-bottom: 0.5rem !important; } html.dark-mode .pl-md-2 { padding-left: 0.5rem !important; } html.dark-mode .px-md-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } html.dark-mode .py-md-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } html.dark-mode .p-md-3 { padding: 0.75rem !important; } html.dark-mode .pt-md-3 { padding-top: 0.75rem !important; } html.dark-mode .pr-md-3 { padding-right: 0.75rem !important; } html.dark-mode .pb-md-3 { padding-bottom: 0.75rem !important; } html.dark-mode .pl-md-3 { padding-left: 0.75rem !important; } html.dark-mode .px-md-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } html.dark-mode .py-md-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } html.dark-mode .p-md-4 { padding: 1rem !important; } html.dark-mode .pt-md-4 { padding-top: 1rem !important; } html.dark-mode .pr-md-4 { padding-right: 1rem !important; } html.dark-mode .pb-md-4 { padding-bottom: 1rem !important; } html.dark-mode .pl-md-4 { padding-left: 1rem !important; } html.dark-mode .px-md-4 { padding-right: 1rem !important; padding-left: 1rem !important; } html.dark-mode .py-md-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } html.dark-mode .p-md-5 { padding: 1.5rem !important; } html.dark-mode .pt-md-5 { padding-top: 1.5rem !important; } html.dark-mode .pr-md-5 { padding-right: 1.5rem !important; } html.dark-mode .pb-md-5 { padding-bottom: 1.5rem !important; } html.dark-mode .pl-md-5 { padding-left: 1.5rem !important; } html.dark-mode .px-md-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } html.dark-mode .py-md-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } html.dark-mode .p-md-6 { padding: 2rem !important; } html.dark-mode .pt-md-6 { padding-top: 2rem !important; } html.dark-mode .pr-md-6 { padding-right: 2rem !important; } html.dark-mode .pb-md-6 { padding-bottom: 2rem !important; } html.dark-mode .pl-md-6 { padding-left: 2rem !important; } html.dark-mode .px-md-6 { padding-right: 2rem !important; padding-left: 2rem !important; } html.dark-mode .py-md-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } html.dark-mode .p-md-7 { padding: 2.5rem !important; } html.dark-mode .pt-md-7 { padding-top: 2.5rem !important; } html.dark-mode .pr-md-7 { padding-right: 2.5rem !important; } html.dark-mode .pb-md-7 { padding-bottom: 2.5rem !important; } html.dark-mode .pl-md-7 { padding-left: 2.5rem !important; } html.dark-mode .px-md-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } html.dark-mode .py-md-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } html.dark-mode .p-md-8 { padding: 3rem !important; } html.dark-mode .pt-md-8 { padding-top: 3rem !important; } html.dark-mode .pr-md-8 { padding-right: 3rem !important; } html.dark-mode .pb-md-8 { padding-bottom: 3rem !important; } html.dark-mode .pl-md-8 { padding-left: 3rem !important; } html.dark-mode .px-md-8 { padding-right: 3rem !important; padding-left: 3rem !important; } html.dark-mode .py-md-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } html.dark-mode .p-md-9 { padding: 3.5rem !important; } html.dark-mode .pt-md-9 { padding-top: 3.5rem !important; } html.dark-mode .pr-md-9 { padding-right: 3.5rem !important; } html.dark-mode .pb-md-9 { padding-bottom: 3.5rem !important; } html.dark-mode .pl-md-9 { padding-left: 3.5rem !important; } html.dark-mode .px-md-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } html.dark-mode .py-md-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } html.dark-mode .p-md-10 { padding: 4rem !important; } html.dark-mode .pt-md-10 { padding-top: 4rem !important; } html.dark-mode .pr-md-10 { padding-right: 4rem !important; } html.dark-mode .pb-md-10 { padding-bottom: 4rem !important; } html.dark-mode .pl-md-10 { padding-left: 4rem !important; } html.dark-mode .px-md-10 { padding-right: 4rem !important; padding-left: 4rem !important; } html.dark-mode .py-md-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 66.5rem) { html.dark-mode .p-lg-0 { padding: 0 !important; } html.dark-mode .pt-lg-0 { padding-top: 0 !important; } html.dark-mode .pr-lg-0 { padding-right: 0 !important; } html.dark-mode .pb-lg-0 { padding-bottom: 0 !important; } html.dark-mode .pl-lg-0 { padding-left: 0 !important; } html.dark-mode .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } html.dark-mode .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } html.dark-mode .p-lg-1 { padding: 0.25rem !important; } html.dark-mode .pt-lg-1 { padding-top: 0.25rem !important; } html.dark-mode .pr-lg-1 { padding-right: 0.25rem !important; } html.dark-mode .pb-lg-1 { padding-bottom: 0.25rem !important; } html.dark-mode .pl-lg-1 { padding-left: 0.25rem !important; } html.dark-mode .px-lg-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } html.dark-mode .py-lg-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } html.dark-mode .p-lg-2 { padding: 0.5rem !important; } html.dark-mode .pt-lg-2 { padding-top: 0.5rem !important; } html.dark-mode .pr-lg-2 { padding-right: 0.5rem !important; } html.dark-mode .pb-lg-2 { padding-bottom: 0.5rem !important; } html.dark-mode .pl-lg-2 { padding-left: 0.5rem !important; } html.dark-mode .px-lg-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } html.dark-mode .py-lg-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } html.dark-mode .p-lg-3 { padding: 0.75rem !important; } html.dark-mode .pt-lg-3 { padding-top: 0.75rem !important; } html.dark-mode .pr-lg-3 { padding-right: 0.75rem !important; } html.dark-mode .pb-lg-3 { padding-bottom: 0.75rem !important; } html.dark-mode .pl-lg-3 { padding-left: 0.75rem !important; } html.dark-mode .px-lg-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } html.dark-mode .py-lg-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } html.dark-mode .p-lg-4 { padding: 1rem !important; } html.dark-mode .pt-lg-4 { padding-top: 1rem !important; } html.dark-mode .pr-lg-4 { padding-right: 1rem !important; } html.dark-mode .pb-lg-4 { padding-bottom: 1rem !important; } html.dark-mode .pl-lg-4 { padding-left: 1rem !important; } html.dark-mode .px-lg-4 { padding-right: 1rem !important; padding-left: 1rem !important; } html.dark-mode .py-lg-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } html.dark-mode .p-lg-5 { padding: 1.5rem !important; } html.dark-mode .pt-lg-5 { padding-top: 1.5rem !important; } html.dark-mode .pr-lg-5 { padding-right: 1.5rem !important; } html.dark-mode .pb-lg-5 { padding-bottom: 1.5rem !important; } html.dark-mode .pl-lg-5 { padding-left: 1.5rem !important; } html.dark-mode .px-lg-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } html.dark-mode .py-lg-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } html.dark-mode .p-lg-6 { padding: 2rem !important; } html.dark-mode .pt-lg-6 { padding-top: 2rem !important; } html.dark-mode .pr-lg-6 { padding-right: 2rem !important; } html.dark-mode .pb-lg-6 { padding-bottom: 2rem !important; } html.dark-mode .pl-lg-6 { padding-left: 2rem !important; } html.dark-mode .px-lg-6 { padding-right: 2rem !important; padding-left: 2rem !important; } html.dark-mode .py-lg-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } html.dark-mode .p-lg-7 { padding: 2.5rem !important; } html.dark-mode .pt-lg-7 { padding-top: 2.5rem !important; } html.dark-mode .pr-lg-7 { padding-right: 2.5rem !important; } html.dark-mode .pb-lg-7 { padding-bottom: 2.5rem !important; } html.dark-mode .pl-lg-7 { padding-left: 2.5rem !important; } html.dark-mode .px-lg-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } html.dark-mode .py-lg-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } html.dark-mode .p-lg-8 { padding: 3rem !important; } html.dark-mode .pt-lg-8 { padding-top: 3rem !important; } html.dark-mode .pr-lg-8 { padding-right: 3rem !important; } html.dark-mode .pb-lg-8 { padding-bottom: 3rem !important; } html.dark-mode .pl-lg-8 { padding-left: 3rem !important; } html.dark-mode .px-lg-8 { padding-right: 3rem !important; padding-left: 3rem !important; } html.dark-mode .py-lg-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } html.dark-mode .p-lg-9 { padding: 3.5rem !important; } html.dark-mode .pt-lg-9 { padding-top: 3.5rem !important; } html.dark-mode .pr-lg-9 { padding-right: 3.5rem !important; } html.dark-mode .pb-lg-9 { padding-bottom: 3.5rem !important; } html.dark-mode .pl-lg-9 { padding-left: 3.5rem !important; } html.dark-mode .px-lg-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } html.dark-mode .py-lg-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } html.dark-mode .p-lg-10 { padding: 4rem !important; } html.dark-mode .pt-lg-10 { padding-top: 4rem !important; } html.dark-mode .pr-lg-10 { padding-right: 4rem !important; } html.dark-mode .pb-lg-10 { padding-bottom: 4rem !important; } html.dark-mode .pl-lg-10 { padding-left: 4rem !important; } html.dark-mode .px-lg-10 { padding-right: 4rem !important; padding-left: 4rem !important; } html.dark-mode .py-lg-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media (min-width: 87.5rem) { html.dark-mode .p-xl-0 { padding: 0 !important; } html.dark-mode .pt-xl-0 { padding-top: 0 !important; } html.dark-mode .pr-xl-0 { padding-right: 0 !important; } html.dark-mode .pb-xl-0 { padding-bottom: 0 !important; } html.dark-mode .pl-xl-0 { padding-left: 0 !important; } html.dark-mode .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } html.dark-mode .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } html.dark-mode .p-xl-1 { padding: 0.25rem !important; } html.dark-mode .pt-xl-1 { padding-top: 0.25rem !important; } html.dark-mode .pr-xl-1 { padding-right: 0.25rem !important; } html.dark-mode .pb-xl-1 { padding-bottom: 0.25rem !important; } html.dark-mode .pl-xl-1 { padding-left: 0.25rem !important; } html.dark-mode .px-xl-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; } html.dark-mode .py-xl-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; } html.dark-mode .p-xl-2 { padding: 0.5rem !important; } html.dark-mode .pt-xl-2 { padding-top: 0.5rem !important; } html.dark-mode .pr-xl-2 { padding-right: 0.5rem !important; } html.dark-mode .pb-xl-2 { padding-bottom: 0.5rem !important; } html.dark-mode .pl-xl-2 { padding-left: 0.5rem !important; } html.dark-mode .px-xl-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; } html.dark-mode .py-xl-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; } html.dark-mode .p-xl-3 { padding: 0.75rem !important; } html.dark-mode .pt-xl-3 { padding-top: 0.75rem !important; } html.dark-mode .pr-xl-3 { padding-right: 0.75rem !important; } html.dark-mode .pb-xl-3 { padding-bottom: 0.75rem !important; } html.dark-mode .pl-xl-3 { padding-left: 0.75rem !important; } html.dark-mode .px-xl-3 { padding-right: 0.75rem !important; padding-left: 0.75rem !important; } html.dark-mode .py-xl-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; } html.dark-mode .p-xl-4 { padding: 1rem !important; } html.dark-mode .pt-xl-4 { padding-top: 1rem !important; } html.dark-mode .pr-xl-4 { padding-right: 1rem !important; } html.dark-mode .pb-xl-4 { padding-bottom: 1rem !important; } html.dark-mode .pl-xl-4 { padding-left: 1rem !important; } html.dark-mode .px-xl-4 { padding-right: 1rem !important; padding-left: 1rem !important; } html.dark-mode .py-xl-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; } html.dark-mode .p-xl-5 { padding: 1.5rem !important; } html.dark-mode .pt-xl-5 { padding-top: 1.5rem !important; } html.dark-mode .pr-xl-5 { padding-right: 1.5rem !important; } html.dark-mode .pb-xl-5 { padding-bottom: 1.5rem !important; } html.dark-mode .pl-xl-5 { padding-left: 1.5rem !important; } html.dark-mode .px-xl-5 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; } html.dark-mode .py-xl-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; } html.dark-mode .p-xl-6 { padding: 2rem !important; } html.dark-mode .pt-xl-6 { padding-top: 2rem !important; } html.dark-mode .pr-xl-6 { padding-right: 2rem !important; } html.dark-mode .pb-xl-6 { padding-bottom: 2rem !important; } html.dark-mode .pl-xl-6 { padding-left: 2rem !important; } html.dark-mode .px-xl-6 { padding-right: 2rem !important; padding-left: 2rem !important; } html.dark-mode .py-xl-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; } html.dark-mode .p-xl-7 { padding: 2.5rem !important; } html.dark-mode .pt-xl-7 { padding-top: 2.5rem !important; } html.dark-mode .pr-xl-7 { padding-right: 2.5rem !important; } html.dark-mode .pb-xl-7 { padding-bottom: 2.5rem !important; } html.dark-mode .pl-xl-7 { padding-left: 2.5rem !important; } html.dark-mode .px-xl-7 { padding-right: 2.5rem !important; padding-left: 2.5rem !important; } html.dark-mode .py-xl-7 { padding-top: 2.5rem !important; padding-bottom: 2.5rem !important; } html.dark-mode .p-xl-8 { padding: 3rem !important; } html.dark-mode .pt-xl-8 { padding-top: 3rem !important; } html.dark-mode .pr-xl-8 { padding-right: 3rem !important; } html.dark-mode .pb-xl-8 { padding-bottom: 3rem !important; } html.dark-mode .pl-xl-8 { padding-left: 3rem !important; } html.dark-mode .px-xl-8 { padding-right: 3rem !important; padding-left: 3rem !important; } html.dark-mode .py-xl-8 { padding-top: 3rem !important; padding-bottom: 3rem !important; } html.dark-mode .p-xl-9 { padding: 3.5rem !important; } html.dark-mode .pt-xl-9 { padding-top: 3.5rem !important; } html.dark-mode .pr-xl-9 { padding-right: 3.5rem !important; } html.dark-mode .pb-xl-9 { padding-bottom: 3.5rem !important; } html.dark-mode .pl-xl-9 { padding-left: 3.5rem !important; } html.dark-mode .px-xl-9 { padding-right: 3.5rem !important; padding-left: 3.5rem !important; } html.dark-mode .py-xl-9 { padding-top: 3.5rem !important; padding-bottom: 3.5rem !important; } html.dark-mode .p-xl-10 { padding: 4rem !important; } html.dark-mode .pt-xl-10 { padding-top: 4rem !important; } html.dark-mode .pr-xl-10 { padding-right: 4rem !important; } html.dark-mode .pb-xl-10 { padding-bottom: 4rem !important; } html.dark-mode .pl-xl-10 { padding-left: 4rem !important; } html.dark-mode .px-xl-10 { padding-right: 4rem !important; padding-left: 4rem !important; } html.dark-mode .py-xl-10 { padding-top: 4rem !important; padding-bottom: 4rem !important; } } - -@media print { html.dark-mode .site-footer, html.dark-mode .site-button, html.dark-mode #edit-this-page, html.dark-mode #back-to-top, html.dark-mode .site-nav, html.dark-mode .main-header { display: none !important; } html.dark-mode .side-bar { width: 100%; height: auto; border-right: 0 !important; } html.dark-mode .site-header { border-bottom: 1px solid #44434d; } html.dark-mode .site-title { font-size: 1rem !important; font-weight: 700 !important; } html.dark-mode .text-small { font-size: 8pt !important; } html.dark-mode pre.highlight { border: 1px solid #44434d; } html.dark-mode .main { max-width: none; margin-left: 0; } } - -html.dark-mode a.skip-to-main { left: -999px; position: absolute; top: auto; width: 1px; height: 1px; overflow: hidden; z-index: -999; } - -html.dark-mode a.skip-to-main:focus, html.dark-mode a.skip-to-main:active { color: #2c84fa; background-color: #27262b; left: auto; top: auto; width: 30%; height: auto; overflow: auto; margin: 10px 35%; padding: 5px; border-radius: 15px; border: 4px solid #264caf; text-align: center; font-size: 1.2em; z-index: 999; } - -html.dark-mode div.opaque { background-color: #27262b; } - -html.dark-mode .markdown-alert { padding: 0.5rem 1rem; margin-bottom: 1rem; color: inherit; border-left: 0.25em solid #30363d; } - -html.dark-mode .markdown-alert > :first-child { margin-top: 0; } - -html.dark-mode .markdown-alert > :last-child { margin-bottom: 0; } - -html.dark-mode .markdown-alert .markdown-alert-title { display: flex; font-weight: 500; align-items: center; line-height: 1; } - -html.dark-mode .markdown-alert svg { margin-right: 0.5rem !important; } - -html.dark-mode .markdown-alert svg path { fill: currentColor; } - -html.dark-mode .markdown-alert.markdown-alert-note { border-left-color: #4493f8; } - -html.dark-mode .markdown-alert.markdown-alert-note .markdown-alert-title { color: #4493f8; } - -html.dark-mode .markdown-alert.markdown-alert-important { border-left-color: #ab7df8; } - -html.dark-mode .markdown-alert.markdown-alert-important .markdown-alert-title { color: #ab7df8; } - -html.dark-mode .markdown-alert.markdown-alert-warning { border-left-color: #9e6a03; } - -html.dark-mode .markdown-alert.markdown-alert-warning .markdown-alert-title { color: #d29922; } - -html.dark-mode .markdown-alert.markdown-alert-tip { border-left-color: #238636; } - -html.dark-mode .markdown-alert.markdown-alert-tip .markdown-alert-title { color: #3fb950; } - -html.dark-mode .markdown-alert.markdown-alert-caution { border-left-color: #da3633; } - -html.dark-mode .markdown-alert.markdown-alert-caution .markdown-alert-title { color: #f85149; } - -html.dark-mode .site-logo { padding-right: 3rem; } - -html.dark-mode html.dark-mode { /* SCROLLBAR STYLING */ /* LEGACY (-2025) */ /* MODERN (2025-) */ } - -html.dark-mode html.dark-mode ::-webkit-scrollbar { width: 15.5px; height: 15.5px; } - -html.dark-mode html.dark-mode ::-webkit-scrollbar-track { background: #1a1a1a; } - -html.dark-mode html.dark-mode ::-webkit-scrollbar-thumb { background: #404040; border-radius: 5.5px; border-left: 3.75px solid #1a1a1a; border-right: 3.75px solid #1a1a1a; } - -html.dark-mode html.dark-mode ::-webkit-scrollbar-thumb:hover { background: #909090; } - -html.dark-mode html.dark-mode ::-webkit-scrollbar-corner { background: #1a1a1a; } - -@supports (scrollbar-color: #404040 #1a1a1a) { html.dark-mode html.dark-mode { scrollbar-color: #404040 #1a1a1a; } } - -html.dark-mode .language-tb .highlight .c1 { /* SymbolComment — ' comments and REM */ color: #448a63; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .cm { /* SymbolComment — C-style block comments */ color: #448a63; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .cp { /* SymbolConditionalCompilationDirective — #If / #ElseIf / #Else / #End If / #Const / #Region */ color: #ad8c98; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .k { /* SymbolKeyword — Dim, If, End, Sub, ... */ color: #6c8eda; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .kd { /* SymbolKeyword — Option Strict / Explicit / Compare / Base */ color: #6c8eda; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .kt { /* SymbolBuiltInDataType — Boolean, Integer, String, ... */ color: #b1551f; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .lb { /* SymbolLiteralBoolean — True, False */ color: #c495d3; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .lc { /* SymbolContinuationCharacter — '_' line-continuation marker */ color: #808080; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .ld { /* SymbolLiteralDate — #m/d/yyyy [h:mm:ss am/pm]# date-time literals */ color: #c495d3; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .le { /* SymbolLiteralEmpty — Empty */ color: #c495d3; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .ln { /* SymbolLiteralNothing — Nothing */ color: #c495d3; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .lu { /* SymbolLiteralNull — Null */ color: #c495d3; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .mi { /* SymbolLiteralNumeric — integer literals */ color: #aeca89; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .mf { /* SymbolLiteralNumeric — float literals */ color: #aeca89; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .s { /* SymbolLiteralString — string literals */ color: #aeca89; font-style: oblique; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .se { /* SymbolLiteralString — "" escape inside string literals */ color: #aeca89; font-style: oblique; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .o { /* SymbolOperator — +, -, =, <, >, &, ... */ color: #80a1a5; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .ow { /* SymbolNamedOperator — And, Or, Not, Is, Mod, ... */ color: #80a1a5; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .na { /* SymbolAttribute — [Documentation(...)] attribute names */ color: #5c5c53; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .nb { /* SymbolClass — Debug, Err */ color: #e4c685; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .nc { /* SymbolClass — Class / CoClass / Enum / Interface / Type / Structure names */ color: #e4c685; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .nf { /* SymbolFunction — Function / Sub / Property names */ color: #cf9a5d; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .nn { /* SymbolModule — Module / Namespace / Imports targets */ color: #a8a887; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb .highlight .nv { /* SymbolVariable — Dim / Const / ReDim variable names */ color: #8b8b52; font-style: normal; font-weight: normal; text-decoration: none; } - -html.dark-mode .language-tb.highlighter-rouge, html.dark-mode .language-tb .highlight, html.dark-mode .language-tb pre.highlight, html.dark-mode .language-tb .highlight pre { background-color: #212121; } - -html.dark-mode.search-active .search { position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 0; } - -html.dark-mode.search-active .search-input-wrap { height: 4rem; border-radius: 0; } - -@media (min-width: 50rem) { html.dark-mode.search-active .search-input-wrap { width: 33.5rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); } } - -html.dark-mode.search-active .search-input { background-color: #302d36; } - -@media (min-width: 50rem) { html.dark-mode.search-active .search-input { padding-left: 2.3rem; } } - -@media (min-width: 50rem) { html.dark-mode.search-active .search-label { padding-left: 0.6rem; } } - -html.dark-mode.search-active .search-results { display: block; } - -html.dark-mode.search-active .search-overlay { width: 100%; height: 100%; opacity: 1; transition: opacity ease 400ms, width 0s, height 0s; } - -@media (min-width: 50rem) { html.dark-mode.search-active .main { position: fixed; right: 0; left: 0; } } - -html.dark-mode.search-active .main-header { padding-top: 4rem; } - -@media (min-width: 50rem) { html.dark-mode.search-active .main-header { padding-top: 0; } } - -html.dark-mode div.highlighter-rouge div.highlight { line-height: 1; } - -html.dark-mode span { color: #2c84fa; } - -html.dark-mode .site-footer { color: #959396; } - -html.dark-mode h1, html.dark-mode h2, html.dark-mode h3, html.dark-mode h4, html.dark-mode h5, html.dark-mode h6, html.dark-mode #toctitle { font-weight: 500; } - -td code, th code { font-size: 1em; } - -/*# sourceMappingURL=just-the-docs-combined.css.map */ \ No newline at end of file diff --git a/builder/assets/css/just-the-docs-head-nav.css b/builder/assets/css/just-the-docs-head-nav.css deleted file mode 100644 index 5ec5aae6..00000000 --- a/builder/assets/css/just-the-docs-head-nav.css +++ /dev/null @@ -1,4 +0,0 @@ - -.site-nav ul li a { background-image: linear-gradient(-90deg, #ebedf5 0%, rgba(235, 237, 245, 0.8) 80%, rgba(235, 237, 245, 0) 100%); } - -html.dark-mode .site-nav ul li a { background-image: linear-gradient(-90deg, #201f23 0%, rgba(32, 31, 35, 0.8) 80%, rgba(32, 31, 35, 0) 100%); } diff --git a/builder/assets/css/print.css b/builder/assets/css/print.css deleted file mode 100644 index e8d39239..00000000 --- a/builder/assets/css/print.css +++ /dev/null @@ -1,621 +0,0 @@ -/* Self-contained print stylesheet for the twinBASIC documentation PDF. - Rendered through pagedjs-cli (CSS Paged Media Module Level 3). - - Paired with tb-highlight.css (generated at build time from the - vendored .theme files; see builder/highlight-theme.mjs). No - just-the-docs styles are loaded for the PDF build --- this file is - the complete book design. */ - - -/* ---- Page geometry, running header, page numbers --------------------- */ - - -/* ---- Print-only suppression ---------------------------------------- */ - -/* The copy-code button is interactive chrome; it has no place in the - PDF. The button HTML is server-rendered (Phase 11 B5) so it's in - book.html too. Hide it for the PDF render path. */ -button.copy-code { display: none; } - - -@page { - size: A4; - margin: 22mm 20mm 22mm 20mm; - - @bottom-right { - /* Page number with part-title prefix. `string(part-title)` is set by - a hidden span on each part-divider article and persists across - pages until the next part. `var(--page-num)` is a JS-tracked - counter that survives aggressive-detach (perf/detach-pages.js) -- - CSS `counter(page)` breaks when finalized pages are removed from - the DOM, so the Counters handler polyfills it as a CSS variable. - Named @page overrides (front-matter, divider, :first) suppress or - simplify this for pages that shouldn't show the part prefix. */ - content: string(part-title) " - " var(--page-num); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; - font-size: 9pt; - color: #555; - } - - @top-right { - content: string(chapter-title); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; - font-size: 9pt; - color: #555; - } -} - -/* Page 1 of the document is the title page (book.html emits it before any - article). Suppress both the running header and the page number on it -- - traditional title-page convention. `:first` here is the document's first - page, not the first page of each chapter. */ -@page :first { - @top-right { content: ""; } - @bottom-right { content: ""; } -} - - -/* ---- Chapter boundaries --------------------------------------------- */ - -/* One page break per article. Putting `break-before: page` on the - article itself (rather than on its h1) avoids the stacking-blank - issue where pagedjs honours an article-level break AND an inner - h1-level break separately. */ -article { - break-before: page; -} - -/* Running-header source. Every chapter emits a hidden `` as its first child; that span is the - string-set source for the @top-right chapter title. Routing through a - single dedicated element avoids pagedjs quirks where `:first-of-type` - + class-restricted selectors on h2/h3 left some top-level chapter - pages with stale or empty running headers. For top-level chapters the - span carries the chapter title; for sub-pages it carries the compound - "Parent - Sub" title (1.6c). */ -article.page > .header-string { - string-set: chapter-title content(); - position: absolute; - font-size: 0; - width: 0; - height: 0; - overflow: hidden; -} - -/* Part-title source for the @bottom-right page number prefix. Each part - divider emits a hidden carrying the - part's title. `string(part-title)` persists across pages until the - next part divider overrides it -- same mechanism as chapter-title. */ -article.part-divider > .part-title-string { - string-set: part-title content(); - position: absolute; - font-size: 0; - width: 0; - height: 0; - overflow: hidden; -} - -/* ---- Title page (front matter, page 1) ------------------------------ - Emitted by book.html as the first element in , so it lands on - page 1 without any forced break. Chrome (running header + page number) - is blanked through the document-level `@page :first` rule above. - The book title sits a little below vertical centre; build provenance - and copyright pad down to the page bottom. */ - -section.title-page { - text-align: center; - padding-top: 60mm; - break-after: page; -} - -section.title-page .book-title { - font-size: 36pt; - font-weight: 700; - border: none; - line-height: 1.1; - margin: 0 0 0.4em; - break-after: avoid; -} - -section.title-page .book-subtitle { - font-size: 16pt; - font-style: italic; - color: #444; - margin: 0; -} - -section.title-page .title-footer { - margin-top: 130mm; - font-size: 9pt; - color: #555; -} - -section.title-page .title-footer p { - margin: 0.3em 0; -} - - -/* ---- Part divider pages --------------------------------------------- - One
is emitted per part in book.yml. - Each gets its own page; the running header is suppressed via the - named `divider` page; the page number stays in @bottom-right so the - eventual TOC can target the divider correctly. */ - -article.part-divider { - page: divider; - text-align: center; - padding-top: 35%; - /* Restart page numbering at each Part so each section of the book reads - like a self-contained volume. Pagedjs's Counters module picks this up - and emits a `data-counter-page-reset` attribute on the element; the - `afterPageLayout` hook then injects a per-page rule that resets the - `page` counter on the part divider's page. Reset to 0 (not 1) so the - first content page after the divider reads "1" once the auto-increment - fires. The divider's @page rule suppresses both the running header and - the page counter (see @page divider below) so the divider page itself - reads as unnumbered, matching traditional book convention. */ - counter-reset: page 0; -} - -article.part-divider .part-number { - font-size: 14pt; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.2em; - color: #555; - margin: 0 0 1.2em; -} - -article.part-divider h1, -article.part-divider .part-title-silent { - font-size: 32pt; - font-weight: 700; - border: none; - margin: 0 0 0.4em; - break-before: auto; - break-after: avoid; - line-height: 1.15; -} - -article.part-divider .part-subtitle { - font-size: 14pt; - font-style: italic; - color: #444; - margin: 0 0 2em; -} - -article.part-divider .part-intro { - max-width: 32em; - margin: 2em auto 0; - text-align: left; - font-size: 10.5pt; - color: #333; -} - -@page divider { - @top-right { content: ""; } - @bottom-right { content: ""; } -} - - -/* ---- Front matter ------------------------------------------------------- - Each
is emitted between the title page and - the first numbered Part (book.yml's `front_matter:` list). No part - divider, no part number; runs as ordinary book content but on a named - page that suppresses the running header so it reads as foreword-style - front matter rather than a chapter from inside a part. The named-page - selector works here because the article has `break-before: page` (per - the pagedjs gotcha that first-of-body never gets a named page applied; - front matter is never the first element thanks to the preceding - title-page section). */ - -article.front-matter { - page: front-matter; - break-before: page; -} - -@page front-matter { - @top-right { content: ""; } - @bottom-right { content: var(--page-num); } -} - - -/* ---- Part foreword + chapter dividers (1.9) ----------------------------- - A chaptered Part (currently the Packages part) emits two new article - shapes in addition to its regular chapter bodies: - -
-- the part's intro page, sitting - between the part divider and - the first chapter divider. No - running header (named page). -
-- one per chapter, full-page - title page styled like a - scaled-down part divider. - - Chapter dividers use the same vertical centering as part dividers but - slightly smaller type, and no chapter number (the chapter ordinal is - implicit and doesn't read well at this position). The chapter title - on the divider is an H2 so it sits one level under the part divider's - H1 in the PDF outline; the corresponding source H1 on the chapter's - landing page is stripped by the book-href-rewrite plugin so the - outline shows the divider's H2 as the chapter's sole top-level entry. */ - -article.part-foreword { - page: part-foreword; - break-before: page; -} - -@page part-foreword { - @top-right { content: ""; } -} - -article.chapter-divider { - page: chapter-divider; - break-before: page; - text-align: center; - padding-top: 30%; -} - -article.chapter-divider h2, -article.chapter-divider .chapter-title-silent { - font-size: 24pt; - font-weight: 700; - border: none; - margin: 0 0 0.5em; - break-before: auto; - break-after: avoid; - line-height: 1.2; -} - -article.chapter-divider .chapter-subtitle { - font-size: 13pt; - font-style: italic; - color: #444; - margin: 0 auto; - max-width: 28em; -} - -@page chapter-divider { - @top-right { content: ""; } -} - - -/* ---- Base typography ----------------------------------------------- */ - -html { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 10.5pt; - line-height: 1.45; - color: #1a1a1a; -} - -body { - margin: 0; -} - -strong { font-weight: 700; } -em { font-style: italic; } - - -/* ---- Headings ------------------------------------------------------ - After the 1.5a heading shift, the book uses h1 only on part dividers - (and any future title page / colophon). Chapter content uses h2..h6 - with one level of demotion from the source kramdown output: - source h1 (chapter title) -> h2 - source h2 (section) -> h3 - source h3 (subsection) -> h4 - source h4..h6 -> h5..h7-stub - Visual sizes therefore stay anchored to the *source* role rather - than the rendered tag depth: the chapter title gets the big 24pt - look (article.page > h2:first-of-type below), sub-sections keep - their previous 18pt/14pt/12pt sizing through the per-depth rules. */ - -h1, h2, h3, h4, h5, h6, h7-stub { - font-family: inherit; - color: #111; - margin: 1.6em 0 0.5em; - line-height: 1.25; - break-after: avoid; - break-inside: avoid; - display: block; -} - -h1 { - font-size: 24pt; - font-weight: 700; - margin-top: 0; - margin-bottom: 0.8em; -} - -/* Chapter title for top-level chapters (source h1, now h2 after 1.5a). - Big, bold, no underline -- overrides the generic h2 rule. The - :not(.sub-chapter) restriction matches the string-set selector above - so sub-chapter articles don't apply this rule. */ -article.page:not(.sub-chapter) > h2:first-of-type { - font-size: 24pt; - font-weight: 700; - border-bottom: none; - padding-bottom: 0; - margin-top: 0; - margin-bottom: 0.8em; -} - -/* Sub-page chapter title (source h1, now h3 after 1.5a + 1.6b). Slightly - smaller than a top-level chapter (20pt vs 24pt) to signal that this - chapter sits below its parent index in the outline hierarchy, but - still distinct from in-chapter section headings. Overrides the - generic `article.page h3` 18pt-with-border rule. */ -article.page.sub-chapter > h3:first-of-type { - font-size: 20pt; - font-weight: 700; - border-bottom: none; - padding-bottom: 0; - margin-top: 0; - margin-bottom: 0.7em; -} - -/* Chaptered-part headings (1.9). Chapters inside a chaptered part get - an additional +1 heading shift on top of 1.5a / 1.6b so they nest in - the PDF outline below their chapter-divider's H2 rather than as - siblings. The result: source-H1 lands at h3 (top-level chapter) or - h4 (sub-page), source-H2 lands at h4 or h5, and so on. Visual - styling mirrors the flat-part rules above but at one tag deeper. */ - -/* Top-level chapter in a chaptered part (source h1, now h3). */ -article.page.chaptered:not(.sub-chapter) > h3:first-of-type { - font-size: 24pt; - font-weight: 700; - border-bottom: none; - padding-bottom: 0; - margin-top: 0; - margin-bottom: 0.8em; -} - -/* Sub-page in a chaptered part (source h1, now h4). */ -article.page.chaptered.sub-chapter > h4:first-of-type { - font-size: 20pt; - font-weight: 700; - border-bottom: none; - padding-bottom: 0; - margin-top: 0; - margin-bottom: 0.7em; -} - -/* Section heading inside a chaptered-part chapter (source h2). */ -article.page.chaptered h4 { - font-size: 18pt; - font-weight: 700; - border-bottom: 0.5pt solid #bbb; - padding-bottom: 0.2em; -} - -/* Subsection heading inside a chaptered-part chapter (source h3) -- - Example / See Also / Remarks. */ -article.page.chaptered h5 { - font-size: 14pt; - font-weight: 600; - border: none; - padding: 0; -} - -article.page.chaptered h6 { font-size: 12pt; font-weight: 600; } -article.page.chaptered h7-stub { font-size: 11pt; font-weight: 600; color: #444; } - -/* Generic h2 (only used outside chapters now, e.g. for any future - front-matter sections). Kept for symmetry. */ -h2 { - font-size: 18pt; - font-weight: 700; - border-bottom: 0.5pt solid #bbb; - padding-bottom: 0.2em; -} - -/* Section heading inside a chapter (source h2). */ -article.page h3 { - font-size: 18pt; - font-weight: 700; - border-bottom: 0.5pt solid #bbb; - padding-bottom: 0.2em; -} - -/* Subsection heading inside a chapter (source h3) -- this is what - Example / See Also / Remarks render as. */ -article.page h4 { - font-size: 14pt; - font-weight: 600; - border: none; - padding: 0; -} - -article.page h5 { font-size: 12pt; font-weight: 600; } -article.page h6 { font-size: 11pt; font-weight: 600; } -article.page h7-stub { font-size: 10.5pt; font-weight: 600; color: #444; } - -/* Generic depth fallbacks (for non-chapter contexts). */ -h3 { font-size: 14pt; font-weight: 600; } -h4 { font-size: 12pt; font-weight: 600; } -h5 { font-size: 11pt; font-weight: 600; } -h6 { font-size: 10.5pt; font-weight: 600; color: #444; } -h7-stub { font-size: 10pt; font-weight: 600; color: #555; } - - -/* ---- Paragraphs and lists ----------------------------------------- */ - -p { - margin: 0.6em 0; - orphans: 2; - widows: 2; -} - -ul, ol { - margin: 0.5em 0; - padding-left: 1.8em; -} - -li { - margin: 0.15em 0; - orphans: 2; - widows: 2; -} - - -/* ---- Definition lists (used heavily for parameter docs) ----------- */ - -dl { margin: 0.6em 0; } -dt { font-weight: 600; margin-top: 0.4em; } -dd { margin: 0.1em 0 0.4em 1.8em; } - - -/* ---- Inline code -------------------------------------------------- */ - -code { - font-family: "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace; - background: #f4f4f6; - border: 0.5pt solid #e0e0e4; - border-radius: 2pt; - padding: 0 0.2em; - /* Smaller font-size makes the chip visually tight: glyphs fit naturally - inside the em-box rather than being forced into a cropped height. - Negative top/bottom `margin` on the inline-block keeps the chip's - contribution to the line box small so adjacent lines aren't pushed - apart. */ - display: inline-block; - line-height: 1; - margin: -0.1em 0; - vertical-align: middle; -} - - -/* ---- Code blocks -------------------------------------------------- - Two paths: - - Plain
 (no language fence): the 
 carries the box.
-   - Rouge-rendered (div.highlighter-rouge > .highlight > pre.highlight > code):
-     the div.highlighter-rouge wrapper carries the box; all nested elements
-     (.highlight, pre.highlight, the whitespace `.w` spans whose background
-     rouge.css would otherwise paint behind indented lines) are stripped. */
-
-pre,
-div.highlighter-rouge {
-  font-family: "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
-  font-size: 9pt;
-  line-height: 1.4;
-  margin: 0.6em 0;
-  padding: 0.6em 0.8em;
-  background: #f6f8fa;
-  border-radius: 3pt;
-  white-space: pre-wrap;
-  word-wrap: break-word;
-  overflow-wrap: break-word;
-  break-inside: auto;
-}
-
-div.highlighter-rouge pre,
-div.highlighter-rouge .highlight,
-div.highlighter-rouge pre.highlight,
-div.highlighter-rouge .highlight .w {
-  background: transparent;
-  padding: 0;
-  margin: 0;
-}
-
-/* Code inside 
 shouldn't get the inline-code box/border, and must
-   revert the inline-block + tight line-height the chip rule introduces. */
-pre code,
-div.highlighter-rouge code {
-  background: none;
-  border: none;
-  padding: 0;
-  font-size: inherit;
-  white-space: inherit;
-  display: inline;
-  line-height: inherit;
-}
-
-
-/* ---- Links -------------------------------------------------------- */
-
-a, a:link, a:visited {
-  color: #1d4ed8;
-  text-decoration: none;
-}
-
-
-/* ---- Images ------------------------------------------------------- */
-
-img {
-  max-width: 100%;
-  height: auto;
-}
-
-
-/* ---- Tables ------------------------------------------------------- */
-
-table {
-  width: 100%;
-  border-collapse: collapse;
-  margin: 0.8em 0;
-  font-size: 0.95em;
-  break-inside: auto;
-}
-
-th, td {
-  border: 0.5pt solid #ccc;
-  padding: 0.3em 0.5em;
-  text-align: left;
-  vertical-align: top;
-}
-
-th {
-  background: #f4f4f6;
-  font-weight: 600;
-}
-
-
-/* ---- Blockquotes -------------------------------------------------- */
-
-blockquote {
-  border-left: 2pt solid #bbb;
-  margin: 0.6em 0;
-  padding: 0.2em 0 0.2em 0.8em;
-  color: #444;
-}
-
-
-/* ---- GFMA admonitions (NOTE / IMPORTANT / WARNING / CAUTION / TIP) - */
-
-.markdown-alert {
-  border-left: 3pt solid #888;
-  background: #f6f8fa;
-  margin: 0.8em 0;
-  padding: 0.4em 0.8em 0.5em;
-  break-inside: avoid;
-}
-
-.markdown-alert-title {
-  font-weight: 700;
-  margin: 0 0 0.3em;
-  display: flex;
-  align-items: center;
-  gap: 0.3em;
-}
-
-.markdown-alert-title svg {
-  width: 11pt;
-  height: 11pt;
-  fill: currentColor;
-  flex-shrink: 0;
-}
-
-.markdown-alert > :last-child { margin-bottom: 0; }
-
-.markdown-alert-note         { border-left-color: #0969da; }
-.markdown-alert-note         .markdown-alert-title { color: #0969da; }
-.markdown-alert-important    { border-left-color: #8250df; }
-.markdown-alert-important    .markdown-alert-title { color: #8250df; }
-.markdown-alert-warning      { border-left-color: #bf8700; }
-.markdown-alert-warning      .markdown-alert-title { color: #bf8700; }
-.markdown-alert-caution      { border-left-color: #cf222e; }
-.markdown-alert-caution      .markdown-alert-title { color: #cf222e; }
-.markdown-alert-tip          { border-left-color: #1a7f37; }
-.markdown-alert-tip          .markdown-alert-title { color: #1a7f37; }
diff --git a/builder/assets/js/theme-switch.js b/builder/assets/js/theme-switch.js
deleted file mode 100644
index 63312140..00000000
--- a/builder/assets/js/theme-switch.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// from: https://github.com/mmcesim/mmcesim.org/blob/master/assets/js/theme-switch.js
-
-window.addEventListener("DOMContentLoaded", function() {
-  const toggleDarkMode = document.getElementById("theme-toggle");
-
-  if (localStorage.getItem('theme') === 'dark') {
-    setTheme('dark');
-  } else {
-    setTheme('light');
-  }
-
-  jtd.addEvent(toggleDarkMode, 'click', function(){
-    const currentTheme = getTheme();
-    const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
-
-    localStorage.setItem('theme', newTheme);
-    setTheme(newTheme);
-  });
-
-  function getTheme() {
-    return document.documentElement.classList.contains('dark-mode') ? 'dark' : 'light';
-  }
-
-  function setTheme(theme) {
-    if (theme === 'dark') {
-      toggleDarkMode.innerHTML = ``;
-      document.documentElement.classList.add('dark-mode');
-      document.documentElement.classList.remove('light-mode');
-    } else {
-      toggleDarkMode.innerHTML = ``;
-      document.documentElement.classList.add('light-mode');
-      document.documentElement.classList.remove('dark-mode');
-    }
-  }
-});
\ No newline at end of file
diff --git a/builder/book.mjs b/builder/book.mjs
index 97e7630b..633760ae 100644
--- a/builder/book.mjs
+++ b/builder/book.mjs
@@ -1,7 +1,7 @@
 // Phase 2 book chapter resolution + Phase 8 book.html assembly.
 //
 // Phase 2 surface (§A below): loadBookData, resolveBookChapters,
-// sortByNavOrder. Loads _data/book.yml and walks every entry / part /
+// sortByNavOrder. Loads _book.yml and walks every entry / part /
 // chaptered-part-chapter, resolving the selector schema (page / pages /
 // nav_page / nav_pages + no_descent) to a concrete Array stored
 // as `_chapters` on the entry. Pre-resolves landing_page / foreword_page
@@ -24,7 +24,7 @@ import { compressHtml } from "./compress.mjs";
 import { loadData } from "./data.mjs";
 
 // ---------------------------------------------------------------------------
-// §A  Phase 2: book.yml loader + chapter resolver + sort_by_nav_order
+// §A  Phase 2: _book.yml loader + chapter resolver + sort_by_nav_order
 // ---------------------------------------------------------------------------
 
 // Back-compat wrapper around the generic `loadData` loader. The
diff --git a/builder/data.mjs b/builder/data.mjs
index b7cfed4e..0ab58689 100644
--- a/builder/data.mjs
+++ b/builder/data.mjs
@@ -1,26 +1,13 @@
-// Phase 2 data loader: read every `_data/*.yml` file under srcRoot into
-// a `site.data` object. Mirrors Jekyll's site-wide data injection: each
-// file's basename becomes the key, the parsed YAML the value.
-//
-// See builder/PLAN-9.md §5.2. Pulls the existing book.yml load out of
-// book.mjs into a generic loader so any future `_data/*.yml` file
-// (e.g. `_data/contributors.yml`) lands in `site.data.contributors`
-// without per-file plumbing.
+// Phase 2 data loader: reads `_book.yml` from srcRoot and returns
+// `{ book:  }`, or `{}` when the file is absent.
 
 import { promises as fs } from "node:fs";
 import { existsSync } from "node:fs";
 import path from "node:path";
-import fg from "fast-glob";
 import yaml from "js-yaml";
 
 export async function loadData(srcRoot) {
-  const dataDir = path.join(srcRoot, "_data");
-  if (!existsSync(dataDir)) return {};
-  const files = await fg("*.yml", { cwd: dataDir, absolute: true });
-  const out = {};
-  for (const f of files) {
-    const key = path.basename(f, ".yml");
-    out[key] = yaml.load(await fs.readFile(f, "utf8"));
-  }
-  return out;
+  const f = path.join(srcRoot, "_book.yml");
+  if (!existsSync(f)) return {};
+  return { book: yaml.load(await fs.readFile(f, "utf8")) };
 }
diff --git a/builder/discover.mjs b/builder/discover.mjs
index 7304c3c9..ab680354 100644
--- a/builder/discover.mjs
+++ b/builder/discover.mjs
@@ -12,36 +12,13 @@ import { permalinkToDestPath } from "./paths.mjs";
 const PAGE_EXT = /\.(md|html)$/i;
 const IMAGE_SCOPE = /(^|\/)Images\//;
 
-// Files that look like pages but are toolchain artifacts.
-const IGNORE = [
-  // Underscored directories at the root and at any depth -- catches
-  // _site, _site-offline, _site-pdf, _pdf, _data, _includes, _layouts,
-  // _sass, _plugins, _profile, and every _Images at any depth.
-  "_*/**",
-  "**/_*/**",
-  // Defensive: caches and unrelated trees that should never be in docs/.
-  "**/.git/**",
-  "**/node_modules/**",
-  "**/.jekyll-cache/**",
-  "**/.sass-cache/**",
-  // Theme assets ship prebuilt from builder/assets/ instead.
-  "assets/css/**",
-  "assets/js/**",
-  // Top-level Jekyll / toolchain files.
-  "Gemfile",
-  "Gemfile.lock",
-  "_config.yml",
-  "*.bat",
-  "redirects.json",
-];
-
-export async function discover(srcRoot) {
+export async function discover(srcRoot, ignore = []) {
   const allFiles = await fg("**/*", {
     cwd: srcRoot,
     dot: false,
     onlyFiles: true,
     followSymbolicLinks: false,
-    ignore: IGNORE,
+    ignore,
   });
   allFiles.sort();
 
diff --git a/builder/offline.mjs b/builder/offline.mjs
index 1db09a5f..bf3f0264 100644
--- a/builder/offline.mjs
+++ b/builder/offline.mjs
@@ -112,13 +112,12 @@ export async function writeOffline(pages, staticFiles, site, destRoot, { auxStat
   // the parallel await keeps the timing report honest.
   if (subT) {
     const t0Pages = Date.now();
-    let dPages = 0, dRedirects = 0, dStatics = 0, dThemes = 0, dSearch = 0;
+    let dPages = 0, dRedirects = 0, dStatics = 0, dThemes = 0;
     const branches = [
       writeOfflinePages(pages, deps).then(() => { dPages = Date.now() - t0Pages; }),
       writeOfflineRedirects(auxStats?.redirects?.stubs ?? [], deps).then(() => { dRedirects = Date.now() - t0Pages; }),
       copyOfflineStatics(staticFiles, deps).then(() => { dStatics = Date.now() - t0Pages; }),
       copyOfflineThemeAssets(deps).then(() => { dThemes = Date.now() - t0Pages; }),
-      copyOfflineSearchData(auxStats?.search?.json ?? null, deps).then(() => { dSearch = Date.now() - t0Pages; }),
     ];
     await Promise.all(branches);
     subT.lap("parallel");
@@ -126,14 +125,12 @@ export async function writeOffline(pages, staticFiles, site, destRoot, { auxStat
     console.log(`  offline.redirects (concurrent): ${dRedirects} ms`);
     console.log(`  offline.statics (concurrent): ${dStatics} ms`);
     console.log(`  offline.themeAssets (concurrent): ${dThemes} ms`);
-    console.log(`  offline.searchDataCopy (concurrent): ${dSearch} ms`);
   } else {
     await Promise.all([
       writeOfflinePages(pages, deps),
       writeOfflineRedirects(auxStats?.redirects?.stubs ?? [], deps),
       copyOfflineStatics(staticFiles, deps),
       copyOfflineThemeAssets(deps),
-      copyOfflineSearchData(auxStats?.search?.json ?? null, deps),
     ]);
   }
 
@@ -366,6 +363,8 @@ async function copyOfflineThemeAssets(deps) {
 
   await runLimited(themeEntries, LIMIT, async (e) => {
     if (e.isJtdJs) return;
+    const relAsset = "assets/" + e.relUnderAssets;
+    if (offlineExcluded(relAsset, deps.excludePatterns)) return;
     const dest = path.join(offlineRoot, "assets", e.relUnderAssets);
     if (e.isCss) {
       const cssIn = await fs.readFile(e.srcAbs, "utf8");
@@ -393,14 +392,6 @@ export function deriveOfflineCss(cssIn, themeRel, state) {
   return { css: rewritten, misses };
 }
 
-// §5.6  copyOfflineSearchData -- verbatim copy of search-data.json.
-async function copyOfflineSearchData(jsonBytes, deps) {
-  if (jsonBytes == null) return;
-  const dest = path.join(deps.offlineRoot, "assets/js/search-data.json");
-  await writeFileMkdirp(dest, jsonBytes);
-  deps.counters.assets += 1;
-}
-
 // ---------------------------------------------------------------------------
 // §B  Site-paths set
 // ---------------------------------------------------------------------------
@@ -439,10 +430,6 @@ async function buildSitePaths(pages, staticFiles, destRoot, excludePatterns, stu
       paths.add("/" + rel);
     }
   }
-  // Defensive: the search-data.json Phase 6 writes isn't in pages[]
-  // or staticFiles[]; add it so a stray link from somewhere resolves
-  // instead of becoming an unresolved miss.
-  paths.add("/assets/js/search-data.json");
   return paths;
 }
 
diff --git a/builder/scss.mjs b/builder/scss.mjs
new file mode 100644
index 00000000..5676141a
--- /dev/null
+++ b/builder/scss.mjs
@@ -0,0 +1,60 @@
+// Phase 11 (B3) SCSS compiler: compiles docs/assets/css/just-the-docs-combined.scss
+// using the sass (Dart Sass) package directly. The compiled output is the full
+// just-the-docs-combined.css served to the site.
+//
+// Sass load paths, searched in order:
+//   1. docs/_sass/                            -- our customizations
+//   2. builder/vendor/just-the-docs/_sass/    -- pristine JTD v0.10.1 sources
+//
+// This mirrors how Jekyll resolved partials when the gem was installed: a
+// `_sass/custom/custom.scss` in the site root shadowed the gem's empty
+// upstream version. The same shadowing now happens via load-path ordering.
+//
+// Failure modes:
+//   SETUP   -- sass not installed: throw. There is no pre-compiled fallback;
+//              `npm install` is the fix. The error message points there.
+//   CONTENT -- SCSS syntax error: warn, return { failed: true }. The caller
+//              sets process.exitCode = 1 so CI surfaces it. The site still
+//              renders but without the just-the-docs theme (the previous
+//              build's CSS lingers under /, if any).
+//
+// On success the caller (tbdocs.mjs) injects the result as a generatedAsset
+// at rel "assets/css/just-the-docs-combined.css".
+
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const VENDOR_JTD_SASS = path.join(__dirname, "vendor", "just-the-docs", "_sass");
+const SCSS_REL = path.join("assets", "css", "just-the-docs-combined.scss");
+
+export async function compileScss(srcRoot) {
+  let sass;
+  try {
+    sass = (await import("sass")).default;
+  } catch (err) {
+    throw new Error(
+      "scss: sass not installed. Run `npm install` at the repo root to fetch it.",
+      { cause: err },
+    );
+  }
+
+  const scssPath = path.join(srcRoot, SCSS_REL);
+
+  let result;
+  try {
+    result = sass.compile(scssPath, {
+      style: "expanded",
+      sourceMap: false,
+      loadPaths: [
+        path.join(srcRoot, "_sass"),  // our customizations first
+        VENDOR_JTD_SASS,               // gem fallback
+      ],
+    });
+  } catch (err) {
+    console.warn(`scss: compilation failed:\n  ${err.message}`);
+    return { compiled: false, failed: true };
+  }
+
+  return { compiled: true, css: result.css };
+}
diff --git a/builder/serve.mjs b/builder/serve.mjs
index 8841efbf..de09ed46 100644
--- a/builder/serve.mjs
+++ b/builder/serve.mjs
@@ -134,7 +134,7 @@ function createStaticHandler(destRoot) {
 }
 
 // §D — Watcher filtering
-const IGNORED_PREFIXES = ["_site", "_site-offline", "_site-pdf", "_pdf", "node_modules", ".git"];
+const IGNORED_PREFIXES = ["_site", "_site-offline", "_site-pdf", "_serve", "_pdf", "node_modules", ".git"];
 const IGNORED_BASENAME_RE = /^\.|~$|\.tmp$|\.swp$|^4913$/;
 
 function shouldRebuild(filename) {
@@ -157,12 +157,17 @@ function shouldRebuild(filename) {
 
 export async function runServe(opts) {
   const srcRoot = path.resolve(process.cwd(), opts.src ?? "docs");
-  const destRoot = path.resolve(opts.dest ?? path.join(srcRoot, "_site"));
+  // Serve writes to a tree disjoint from build.bat's `_site/` so a one-off
+  // build.bat run (for the PDF, an offline-mirror check, ...) doesn't clobber
+  // the running serve session's output mid-watch. The HTTP server, the
+  // watcher's IGNORED_PREFIXES, and both runBuild calls below all key off
+  // this same path.
+  const destRoot = path.resolve(opts.dest ?? path.join(srcRoot, "_serve"));
   const port = opts.port ?? 4000;
 
   // Initial build
   try {
-    await runBuild({ ...opts, skipOffline: true, skipPdf: true });
+    await runBuild({ ...opts, dest: destRoot, skipOffline: true, skipPdf: true });
   } catch (err) {
     console.error("serve: initial build failed:", err.message);
     process.exit(1);
@@ -201,7 +206,7 @@ export async function runServe(opts) {
     if (running) { pending = true; return; }
     running = true;
     try {
-      await runBuild({ ...opts, skipOffline: true, skipPdf: true });
+      await runBuild({ ...opts, dest: destRoot, skipOffline: true, skipPdf: true });
       notifyReload();
     } catch (err) {
       console.error("rebuild failed:", err.message);
diff --git a/builder/tbdocs.mjs b/builder/tbdocs.mjs
index 01f3d8a4..5dc3a14e 100644
--- a/builder/tbdocs.mjs
+++ b/builder/tbdocs.mjs
@@ -21,6 +21,7 @@ import yaml from "js-yaml";
 
 import { discover } from "./discover.mjs";
 import { regenerateMermaid } from "./mermaid.mjs";
+import { compileScss } from "./scss.mjs";
 import { computeNav } from "./nav.mjs";
 import { precomputeSeo } from "./seo.mjs";
 import { resolveBookChapters } from "./book.mjs";
@@ -129,16 +130,23 @@ export async function runBuild(opts) {
     process.exitCode = 1;
   }
 
-  const { pages, staticFiles } = await discover(srcRoot);
-  t.lap("discover");
+  const scssResult = await compileScss(srcRoot);
+  t.lap("scss");
+  if (scssResult.failed) {
+    process.exitCode = 1;
+  }
+
+  const config = yaml.load(await fs.readFile(path.join(srcRoot, "_config.yml"), "utf8"));
+  if (opts.baseurl != null) config.baseurl = opts.baseurl;
+  if (opts.url != null) config.url = opts.url;
 
   // Issue build-info immediately so the git shell-outs overlap with the
   // CPU-bound nav work.
   const buildInfoPromise = captureBuildInfo();
 
-  const config = yaml.load(await fs.readFile(path.join(srcRoot, "_config.yml"), "utf8"));
-  if (opts.baseurl != null) config.baseurl = opts.baseurl;
-  if (opts.url != null) config.url = opts.url;
+  const { pages, staticFiles } = await discover(srcRoot, config.exclude ?? []);
+  t.lap("discover");
+
   const { navTree } = computeNav(pages, config);
   t.lap("nav");
 
@@ -173,9 +181,13 @@ export async function runBuild(opts) {
   await templatePhase(pages, site);
   t.lap("template");
 
-  const generatedAssets = highlighter.themeCss
-    ? [{ rel: "assets/css/tb-highlight.css", content: highlighter.themeCss }]
-    : [];
+  const generatedAssets = [];
+  if (highlighter.themeCss) {
+    generatedAssets.push({ rel: "assets/css/tb-highlight.css", content: highlighter.themeCss });
+  }
+  if (scssResult.compiled) {
+    generatedAssets.push({ rel: "assets/css/just-the-docs-combined.css", content: scssResult.css });
+  }
   const writeStats = await writePhase(pages, staticFiles, {
     destRoot,
     dryRun,
diff --git a/builder/vendor/just-the-docs/README.md b/builder/vendor/just-the-docs/README.md
new file mode 100644
index 00000000..e64b821e
--- /dev/null
+++ b/builder/vendor/just-the-docs/README.md
@@ -0,0 +1,89 @@
+# builder/vendor/just-the-docs/
+
+Vendored just-the-docs gem sources at version **0.10.1**. The build pipeline
+reads from this tree on every run; nothing here is published as-is, but
+everything here either feeds a compile step or is copied verbatim into
+`_site/assets/`.
+
+## Inventory
+
+| Path | Origin | Used by |
+|---|---|---|
+| `_sass/` | Gem's `_sass/` at v0.10.1, byte-for-byte (`base.scss`, `buttons.scss`, `code.scss`, `color_schemes/`, `custom/setup.scss` + the gem's empty `custom/custom.scss`, `modules.scss`, `support/`, `utilities/`, `vendor/normalize.scss/normalize.scss`, `vendor/OneLightJekyll/syntax.scss`, `vendor/OneDarkJekyll/syntax.scss`, ...). | [`builder/scss.mjs`](../../scss.mjs) compiles `docs/assets/css/just-the-docs-combined.scss` against these sources via Dart Sass; the load-path ordering puts `docs/_sass/` first so our `custom/custom.scss` shadows the gem's empty one. |
+| `assets/js/just-the-docs.js` | Gem's `assets/js/just-the-docs.js` at v0.10.1, **patched in tree**. | [`builder/write.mjs`](../../write.mjs)'s `copyTheme` copies it to `_site/assets/js/just-the-docs.js`; [`builder/offline.mjs`](../../offline.mjs) re-derives an offline-mode variant via [`acorn`](https://www.npmjs.com/package/acorn)-AST patching. |
+| `assets/js/vendor/lunr.min.js` | Gem's `assets/js/vendor/lunr.min.js` at v0.10.1, unmodified. | Copied verbatim by `copyTheme`. The search index that drives it is the in-process [`builder/search.mjs`](../../search.mjs) output (`assets/js/search-data.json`). |
+
+## In-tree patches to `just-the-docs.js`
+
+The upstream `processCodeBlocks` runtime that injects a copy-code button
+into every `
` was retired. The same button +HTML is now server-rendered by [`builder/highlight.mjs`](../../highlight.mjs) +inside the highlighter wrapper, so the click handler binds to the +pre-rendered buttons via `closest('div.highlighter-rouge')`. The patched +file diverges from upstream by ~20 lines around the `processCodeBlocks` +call sites; the rest stays byte-identical. + +Re-vendoring upstream means re-applying this patch by hand --- the offline +patcher in [`offline.mjs`](../../offline.mjs) is AST-based and survives +cosmetic upstream edits inside the patched function bodies, but the +copy-button retirement above is structural and has to be re-applied. + +## Re-vendoring + +Bumping the just-the-docs version is a deliberate operation. Procedure: + +1. Pick a target tag at [just-the-docs/just-the-docs](https://github.com/just-the-docs/just-the-docs/tags) + --- a patch bump is usually low risk, a minor bump may require entry-point + adjustments because the gem's Liquid include shape can change. + +2. Download the tagged tarball and replace this tree's `_sass/` and + `assets/` with the upstream copies. From the repo root: + + ```sh + # On Windows, the equivalent PowerShell calls are + # Invoke-WebRequest ... -OutFile ...; tar -xzf ... ; Copy-Item -Recurse ... . + TAG=v0.10.2 # whatever you're bumping to + curl -L "https://github.com/just-the-docs/just-the-docs/archive/refs/tags/$TAG.tar.gz" \ + | tar -xz -C "$TMPDIR" + rm -rf builder/vendor/just-the-docs/_sass + rm -rf builder/vendor/just-the-docs/assets + cp -R "$TMPDIR/just-the-docs-${TAG#v}/_sass" builder/vendor/just-the-docs/_sass + mkdir -p builder/vendor/just-the-docs/assets/js/vendor + cp "$TMPDIR/just-the-docs-${TAG#v}/assets/js/just-the-docs.js" \ + builder/vendor/just-the-docs/assets/js/just-the-docs.js + cp "$TMPDIR/just-the-docs-${TAG#v}/assets/js/vendor/lunr.min.js" \ + builder/vendor/just-the-docs/assets/js/vendor/lunr.min.js + ``` + +3. Re-apply the copy-button patch in `assets/js/just-the-docs.js` (see + above). Diffing against the previous vendored copy via `git diff` is + the easiest way to spot what needs to come back. + +4. Inspect the entry point at `docs/assets/css/just-the-docs-combined.scss` + --- if the upstream `_includes/css/just-the-docs.scss.liquid` Liquid + template changed shape between versions, the entry point needs to track + it. The current entry point mirrors v0.10.1's: `support/support`, + `custom/setup`, `color_schemes/`, `modules`, plus the + `callouts.scss.liquid` `div.opaque` rule and the `custom.scss.liquid` + `@import "./custom/custom"`. + +5. Inspect the offline JS patcher in [`builder/offline.mjs`](../../offline.mjs) + --- `deriveOfflineJtdJs` slices in replacements for the upstream `navLink` + and `initSearch` functions; if upstream rewrote either, the replacement + bodies may need a refresh. + +6. Run `build.bat && check.bat`. The link check catches missing CSS / JS + references immediately; visual regressions are best caught by spinning + up a preview and checking both light and dark modes. + +## What this directory does **not** contain + +- Project-owned theme assets (`print.css`, `just-the-docs-head-nav.css`, + `theme-switch.js`) --- those live under `docs/assets/` and are + authored locally, not vendored. +- The generated `_site/assets/css/just-the-docs-combined.css` --- compiled + fresh on every build by [`builder/scss.mjs`](../../scss.mjs), never + committed. +- The twinBASIC IDE syntax theme --- that's vendored separately under + [`builder/themes/`](../../themes/) and consumed by + [`builder/highlight-theme.mjs`](../../highlight-theme.mjs). diff --git a/builder/vendor/just-the-docs/_sass/base.scss b/builder/vendor/just-the-docs/_sass/base.scss new file mode 100644 index 00000000..afa67a40 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/base.scss @@ -0,0 +1,113 @@ +// Base element style overrides +// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id + +:root { + color-scheme: $color-scheme; +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; + + @include fs-4; +} + +body { + font-family: $body-font-family; + font-size: inherit; + line-height: $body-line-height; + color: $body-text-color; + background-color: $body-background-color; + overflow-wrap: break-word; +} + +ol, +ul, +dl, +pre, +address, +blockquote, +table, +div, +hr, +form, +fieldset, +noscript .table-wrapper { + margin-top: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6, +#toctitle { + margin-top: 0; + margin-bottom: 1em; + font-weight: 500; + line-height: $body-heading-line-height; + color: $body-heading-color; +} + +p { + margin-top: 1em; + margin-bottom: 1em; +} + +a { + color: $link-color; + text-decoration: none; +} + +a:not([class]) { + text-decoration: underline; + text-decoration-color: $border-color; + text-underline-offset: 2px; + + &:hover { + text-decoration-color: rgba($link-color, 0.45); + } +} + +code { + font-family: $mono-font-family; + font-size: 0.75em; + line-height: $body-line-height; +} + +figure, +pre { + margin: 0; +} + +li { + margin: 0.25em 0; +} + +img { + max-width: 100%; + height: auto; +} + +hr { + height: 1px; + padding: 0; + margin: $sp-6 0; + background-color: $border-color; + border: 0; +} + +// adds a GitHub-style sidebar to blockquotes +blockquote { + margin: 10px 0; + + // resets user-agent stylesheets for blockquotes + margin-block-start: 0; + margin-inline-start: 0; + padding-left: 1rem; + border-left: 3px solid $border-color; +} diff --git a/builder/vendor/just-the-docs/_sass/buttons.scss b/builder/vendor/just-the-docs/_sass/buttons.scss new file mode 100644 index 00000000..7953f7f0 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/buttons.scss @@ -0,0 +1,127 @@ +// Buttons and things that look like buttons +// stylelint-disable color-named + +.btn { + display: inline-block; + box-sizing: border-box; + padding: 0.3em 1em; + margin: 0; + font-family: inherit; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: $link-color; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: $base-button-color; + border-width: 0; + border-radius: $border-radius; + box-shadow: + 0 1px 2px rgba(0, 0, 0, 0.12), + 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; + + &:focus { + text-decoration: none; + outline: none; + box-shadow: 0 0 0 3px rgba(blue, 0.25); + } + + &:focus:hover, + &.selected:focus { + box-shadow: 0 0 0 3px rgba(blue, 0.25); + } + + &:hover, + &.zeroclipboard-is-hover { + color: darken($link-color, 2%); + } + + &:hover, + &:active, + &.zeroclipboard-is-hover, + &.zeroclipboard-is-active { + text-decoration: none; + background-color: darken($base-button-color, 1%); + } + + &:active, + &.selected, + &.zeroclipboard-is-active { + background-color: darken($base-button-color, 3%); + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); + } + + &.selected:hover { + background-color: darken(#dcdcdc, 5%); + } + + &:disabled, + &.disabled { + &, + &:hover { + color: rgba(102, 102, 102, 0.5); + cursor: default; + background-color: rgba(229, 229, 229, 0.5); + background-image: none; + box-shadow: none; + } + } +} + +.btn-outline { + color: $link-color; + background: transparent; + box-shadow: inset 0 0 0 2px $grey-lt-300; + + &:hover, + &:active, + &.zeroclipboard-is-hover, + &.zeroclipboard-is-active { + color: darken($link-color, 4%); + text-decoration: none; + background-color: transparent; + box-shadow: inset 0 0 0 3px $grey-lt-300; + } + + &:focus { + text-decoration: none; + outline: none; + box-shadow: + inset 0 0 0 2px $grey-dk-100, + 0 0 0 3px rgba(blue, 0.25); + } + + &:focus:hover, + &.selected:focus { + box-shadow: inset 0 0 0 2px $grey-dk-100; + } +} + +.btn-primary { + @include btn-color($white, $btn-primary-color); +} + +.btn-purple { + @include btn-color($white, $purple-100); +} + +.btn-blue { + @include btn-color($white, $blue-000); +} + +.btn-green { + @include btn-color($white, $green-100); +} + +.btn-reset { + background: none; + border: none; + margin: 0; + text-align: inherit; + font: inherit; + border-radius: 0; + appearance: none; +} diff --git a/builder/vendor/just-the-docs/_sass/code.scss b/builder/vendor/just-the-docs/_sass/code.scss new file mode 100644 index 00000000..df54f256 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/code.scss @@ -0,0 +1,246 @@ +// Code and syntax highlighting +// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty + +// {% raw %} + +// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight. +:not(pre, figure) { + & > code { + padding: 0.2em 0.15em; + font-weight: 400; + background-color: $code-background-color; + border: $border $border-color; + border-radius: $border-radius; + } +} + +// Avoid appearance of dark border around visited code links in Safari +a:visited code { + border-color: $border-color; +} + +// Content structure for highlighted code blocks using fences or Liquid +// +// ```[LANG]...```, no kramdown line_numbers: +// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code +// +// ```[LANG]...```, kramdown line_numbers = true: +// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code +// > div.table-wrapper > table.rouge-table > tbody > tr +// > td.rouge-gutter.gl > pre.lineno +// | td.rouge-code > pre +// +// {% highlight LANG %}...{% endhighlight %}: +// figure.highlight > pre > code.language-LANG +// +// {% highlight LANG linenos %}...{% endhighlight %}: +// figure.highlight > pre > code.language-LANG +// > div.table-wrapper > table.rouge-table > tbody > tr +// > td.gutter.gl > pre.lineno +// | td.code > pre +// +// ----...---- (AsciiDoc) +// div.listingblock > div.content > pre.rouge.highlight +// +// fix_linenos removes the outermost pre when it encloses table.rouge-table +// +// See docs/index-test.md for some tests. +// +// No kramdown line_numbers: fences and Liquid highlighting look the same. +// Kramdown line_numbers = true: fences have a wider gutter than with Liquid? + +// ```[LANG]...``` +// or in AsciiDoc: +// +// ---- +// ... +// ---- + +// the code may appear with 3 different types: +// container \ case: default case, code with line number, code with html rendering +// top level: div.highlighter-rouge, figure.highlight, figure.highlight +// second level: div.highlight, div.table-wrapper, pre.highlight +// third level: pre.highlight, td.code, absent +// last level: code, pre, code (optionality) +// highlighter level: span, span, span +// the spacing are only in the second level for case 1, 3 and in the third level for case 2 +// in AsciiDoc, there is a parent container that contains optionally a title and the content. + +// select top level container +div.highlighter-rouge, +div.listingblock > div.content, +figure.highlight { + margin-top: 0; + margin-bottom: $sp-3; + background-color: $code-background-color; + border-radius: $border-radius; + box-shadow: none; + -webkit-overflow-scrolling: touch; + position: relative; + padding: 0; + + // copy button (or other button) + // the button appear only when there is a hover on the code or focus on button + > button { + width: $sp-3; + opacity: 0; + position: absolute; + top: 0; + right: 0; + border: $sp-3 solid $code-background-color; + background-color: $code-background-color; + color: $body-text-color; + box-sizing: content-box; + + svg { + fill: $body-text-color; + } + + &:active { + text-decoration: none; + outline: none; + opacity: 1; + } + + &:focus { + opacity: 1; + } + } + + // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button + &:hover { + > button { + cursor: copy; + opacity: 1; + } + } +} + +// setting the spacing and scrollbar on the second level for the first case +// remove all space on the second and third level +// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc +@mixin scroll-and-spacing($code-div, $pre-select) { + #{$code-div} { + overflow-x: auto; + padding: $sp-3; + margin: 0; + border: 0; + } + + #{$pre-select}, + code { + padding: 0; + margin: 0; + border: 0; + } +} + +// for Markdown +div.highlighter-rouge { + @include scroll-and-spacing("div.highlight", "pre.highlight"); +} + +// for AsciiDoc. we also need to fix the margins for its parent container. +div.listingblock { + margin-top: 0; + margin-bottom: $sp-3; + + @include scroll-and-spacing("div.content", "div.content > pre"); +} + +// {% highlight LANG %}...{% endhighlight %}, +// {% highlight LANG linenos %}...{% endhighlight %}: + +// setting the spacing and scrollbar on the second level for the thirt case +// the css rule are apply only to the last code enviroment +// setting the scroolbar +figure.highlight { + pre, + :not(pre) > code { + overflow-x: auto; + padding: $sp-3; + margin: 0; + border: 0; + } +} + +// ```[LANG]...```, kramdown line_numbers = true, +// {% highlight LANG linenos %}...{% endhighlight %}: + +// setting the spacing and scrollbar on the thirt level for the second case +.highlight .table-wrapper { + padding: $sp-3 0; + margin: 0; + border: 0; + box-shadow: none; + + td, + pre { + min-width: 0; + padding: 0; + background-color: $code-background-color; + border: 0; + + @include fs-2; + } + + td.gl { + width: 1em; + padding-right: $sp-3; + padding-left: $sp-3; + } + + pre { + margin: 0; + line-height: 2; + } +} + +// Code examples: html render of a code +.code-example, +.listingblock > .title { + padding: $sp-3; + margin-bottom: $sp-3; + overflow: auto; + border: 1px solid $border-color; + border-radius: $border-radius; + + + .highlighter-rouge, + + .sectionbody .listingblock, + + .content, + + figure.highlight { + position: relative; + margin-top: -$sp-4; + border-right: 1px solid $border-color; + border-bottom: 1px solid $border-color; + border-left: 1px solid $border-color; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +} + +// Mermaid diagram code blocks should be left unstyled. +code.language-mermaid { + padding: 0; + background-color: inherit; + border: 0; +} + +// Override OneDarkJekyll Colors for Code Blocks +.highlight, +pre.highlight { + background: $code-background-color; // Code Background + // For Backwards Compatibility Before $code-linenumber-color was added + @if variable-exists(code-linenumber-color) { + color: $code-linenumber-color; // Code Line Numbers + } @else { + color: $body-text-color; // Code Line Numbers + } +} + +// Override OneDarkJekyll Colors for Code Blocks +.highlight pre { + background: $code-background-color; // Code Background +} + +// {% endraw %} diff --git a/builder/vendor/just-the-docs/_sass/color_schemes/dark.scss b/builder/vendor/just-the-docs/_sass/color_schemes/dark.scss new file mode 100644 index 00000000..6d0999bb --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/color_schemes/dark.scss @@ -0,0 +1,18 @@ +$color-scheme: dark; +$body-background-color: $grey-dk-300; +$body-heading-color: $grey-lt-000; +$body-text-color: $grey-lt-300; +$link-color: $blue-000; +$nav-child-link-color: $grey-dk-000; +$sidebar-color: $grey-dk-300; +$base-button-color: $grey-dk-250; +$btn-primary-color: $blue-200; +$code-background-color: #31343f; // OneDarkJekyll default for syntax-one-dark-vivid +$code-linenumber-color: #dee2f7; // OneDarkJekyll .nf for syntax-one-dark-vivid +$feedback-color: darken($sidebar-color, 3%); +$table-background-color: $grey-dk-250; +$search-background-color: $grey-dk-250; +$search-result-preview-color: $grey-dk-000; +$border-color: $grey-dk-200; + +@import "./vendor/OneDarkJekyll/syntax"; // this is the one-dark-vivid atom syntax theme diff --git a/builder/vendor/just-the-docs/_sass/color_schemes/legacy_light.scss b/builder/vendor/just-the-docs/_sass/color_schemes/legacy_light.scss new file mode 100644 index 00000000..5eaa1ac8 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/color_schemes/legacy_light.scss @@ -0,0 +1,208 @@ +// Moved from _sass/code.scss + +.highlight .c { + color: #586e75; +} // comment // +.highlight .err { + color: #93a1a1; +} // error // +.highlight .g { + color: #93a1a1; +} // generic // +.highlight .k { + color: #859900; +} // keyword // +.highlight .l { + color: #93a1a1; +} // literal // +.highlight .n { + color: #93a1a1; +} // name // +.highlight .o { + color: #859900; +} // operator // +.highlight .x { + color: #cb4b16; +} // other // +.highlight .p { + color: #93a1a1; +} // punctuation // +.highlight .cm { + color: #586e75; +} // comment.multiline // +.highlight .cp { + color: #859900; +} // comment.preproc // +.highlight .c1 { + color: #586e75; +} // comment.single // +.highlight .cs { + color: #859900; +} // comment.special // +.highlight .gd { + color: #2aa198; +} // generic.deleted // +.highlight .ge { + font-style: italic; + color: #93a1a1; +} // generic.emph // +.highlight .gr { + color: #dc322f; +} // generic.error // +.highlight .gh { + color: #cb4b16; +} // generic.heading // +.highlight .gi { + color: #859900; +} // generic.inserted // +.highlight .go { + color: #93a1a1; +} // generic.output // +.highlight .gp { + color: #93a1a1; +} // generic.prompt // +.highlight .gs { + font-weight: bold; + color: #93a1a1; +} // generic.strong // +.highlight .gu { + color: #cb4b16; +} // generic.subheading // +.highlight .gt { + color: #93a1a1; +} // generic.traceback // +.highlight .kc { + color: #cb4b16; +} // keyword.constant // +.highlight .kd { + color: #268bd2; +} // keyword.declaration // +.highlight .kn { + color: #859900; +} // keyword.namespace // +.highlight .kp { + color: #859900; +} // keyword.pseudo // +.highlight .kr { + color: #268bd2; +} // keyword.reserved // +.highlight .kt { + color: #dc322f; +} // keyword.type // +.highlight .ld { + color: #93a1a1; +} // literal.date // +.highlight .m { + color: #2aa198; +} // literal.number // +.highlight .s { + color: #2aa198; +} // literal.string // +.highlight .na { + color: #555; +} // name.attribute // +.highlight .nb { + color: #b58900; +} // name.builtin // +.highlight .nc { + color: #268bd2; +} // name.class // +.highlight .no { + color: #cb4b16; +} // name.constant // +.highlight .nd { + color: #268bd2; +} // name.decorator // +.highlight .ni { + color: #cb4b16; +} // name.entity // +.highlight .ne { + color: #cb4b16; +} // name.exception // +.highlight .nf { + color: #268bd2; +} // name.function // +.highlight .nl { + color: #555; +} // name.label // +.highlight .nn { + color: #93a1a1; +} // name.namespace // +.highlight .nx { + color: #555; +} // name.other // +.highlight .py { + color: #93a1a1; +} // name.property // +.highlight .nt { + color: #268bd2; +} // name.tag // +.highlight .nv { + color: #268bd2; +} // name.variable // +.highlight .ow { + color: #859900; +} // operator.word // +.highlight .w { + color: #93a1a1; +} // text.whitespace // +.highlight .mf { + color: #2aa198; +} // literal.number.float // +.highlight .mh { + color: #2aa198; +} // literal.number.hex // +.highlight .mi { + color: #2aa198; +} // literal.number.integer // +.highlight .mo { + color: #2aa198; +} // literal.number.oct // +.highlight .sb { + color: #586e75; +} // literal.string.backtick // +.highlight .sc { + color: #2aa198; +} // literal.string.char // +.highlight .sd { + color: #93a1a1; +} // literal.string.doc // +.highlight .s2 { + color: #2aa198; +} // literal.string.double // +.highlight .se { + color: #cb4b16; +} // literal.string.escape // +.highlight .sh { + color: #93a1a1; +} // literal.string.heredoc // +.highlight .si { + color: #2aa198; +} // literal.string.interpol // +.highlight .sx { + color: #2aa198; +} // literal.string.other // +.highlight .sr { + color: #dc322f; +} // literal.string.regex // +.highlight .s1 { + color: #2aa198; +} // literal.string.single // +.highlight .ss { + color: #2aa198; +} // literal.string.symbol // +.highlight .bp { + color: #268bd2; +} // name.builtin.pseudo // +.highlight .vc { + color: #268bd2; +} // name.variable.class // +.highlight .vg { + color: #268bd2; +} // name.variable.global // +.highlight .vi { + color: #268bd2; +} // name.variable.instance // +.highlight .il { + color: #2aa198; +} // literal.number.integer.long // diff --git a/builder/vendor/just-the-docs/_sass/color_schemes/light.scss b/builder/vendor/just-the-docs/_sass/color_schemes/light.scss new file mode 100644 index 00000000..799e9c66 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/color_schemes/light.scss @@ -0,0 +1,16 @@ +$color-scheme: light !default; +$body-background-color: $white !default; +$body-heading-color: $grey-dk-300 !default; +$body-text-color: $grey-dk-100 !default; +$link-color: $purple-000 !default; +$nav-child-link-color: $grey-dk-100 !default; +$sidebar-color: $grey-lt-000 !default; +$base-button-color: #f7f7f7 !default; +$btn-primary-color: $purple-100 !default; +$code-background-color: $grey-lt-000 !default; +$feedback-color: darken($sidebar-color, 3%) !default; +$table-background-color: $white !default; +$search-background-color: $white !default; +$search-result-preview-color: $grey-dk-000 !default; + +@import "./vendor/OneLightJekyll/syntax"; diff --git a/builder/vendor/just-the-docs/_sass/content.scss b/builder/vendor/just-the-docs/_sass/content.scss new file mode 100644 index 00000000..219a0975 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/content.scss @@ -0,0 +1,239 @@ +@charset "UTF-8"; + +// Styles for rendered markdown in the .main-content container +// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id + +.main-content { + line-height: $content-line-height; + + ol, + ul, + dl, + pre, + address, + blockquote, + .table-wrapper { + margin-top: 0.5em; + } + + a { + overflow: hidden; + text-overflow: ellipsis; + } + + ul, + ol { + padding-left: 1.5em; + } + + li { + .highlight { + margin-top: $sp-1; + } + } + + ol { + list-style-type: none; + counter-reset: step-counter; + + > li { + position: relative; + + &::before { + position: absolute; + top: 0.2em; + left: -1.6em; + color: $grey-dk-000; + content: counter(step-counter); + counter-increment: step-counter; + @include fs-3; + + @include mq(sm) { + top: 0.11em; + } + } + + ol { + counter-reset: sub-counter; + + > li { + &::before { + content: counter(sub-counter, lower-alpha); + counter-increment: sub-counter; + } + } + } + } + } + + ul { + list-style: none; + + > li { + &::before { + position: absolute; + margin-left: -1.4em; + color: $grey-dk-000; + content: "•"; + } + } + } + + .task-list-item { + &::before { + content: ""; + } + } + + .task-list-item-checkbox { + margin-right: 0.6em; + margin-left: -1.4em; + + // The same margin-left is used above for ul > li::before + } + + hr + * { + margin-top: 0; + } + + h1:first-of-type { + margin-top: 0.5em; + } + + dl { + display: grid; + grid-template: auto / 10em 1fr; + } + + dt, + dd { + margin: 0.25em 0; + } + + dt { + grid-column: 1; + font-weight: 500; + text-align: right; + + &::after { + content: ":"; + } + } + + dd { + grid-column: 2; + margin-bottom: 0; + margin-left: 1em; + + blockquote, + div, + dl, + dt, + h1, + h2, + h3, + h4, + h5, + h6, + li, + ol, + p, + pre, + table, + ul, + .table-wrapper { + &:first-child { + margin-top: 0; + } + } + } + + dd, + ol, + ul { + dl:first-child { + dt:first-child, + dd:nth-child(2) { + margin-top: 0; + } + } + } + + .anchor-heading { + position: absolute; + right: -$sp-4; + width: $sp-5; + height: 100%; + padding-right: $sp-1; + padding-left: $sp-1; + overflow: visible; + + @include mq(md) { + right: auto; + left: -$sp-5; + } + + svg { + display: inline-block; + width: 100%; + height: 100%; + color: $link-color; + visibility: hidden; + } + } + + .anchor-heading:hover, + .anchor-heading:focus, + h1:hover > .anchor-heading, + h2:hover > .anchor-heading, + h3:hover > .anchor-heading, + h4:hover > .anchor-heading, + h5:hover > .anchor-heading, + h6:hover > .anchor-heading { + svg { + visibility: visible; + } + } + + summary { + cursor: pointer; + } + + h1, + h2, + h3, + h4, + h5, + h6, + #toctitle { + position: relative; + margin-top: 1.5em; + margin-bottom: 0.25em; + + + table, + + .table-wrapper, + + .code-example, + + .highlighter-rouge, + + .sectionbody .listingblock { + margin-top: 1em; + } + + + p:not(.label) { + margin-top: 0; + } + } + + > h1:first-child, + > h2:first-child, + > h3:first-child, + > h4:first-child, + > h5:first-child, + > h6:first-child, + > .sect1:first-child > h2, + > .sect2:first-child > h3, + > .sect3:first-child > h4, + > .sect4:first-child > h5, + > .sect5:first-child > h6 { + margin-top: $sp-2; + } +} diff --git a/builder/vendor/just-the-docs/_sass/custom/custom.scss b/builder/vendor/just-the-docs/_sass/custom/custom.scss new file mode 100644 index 00000000..ac8445a7 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/custom/custom.scss @@ -0,0 +1 @@ +// custom SCSS (or CSS) goes here diff --git a/builder/vendor/just-the-docs/_sass/custom/setup.scss b/builder/vendor/just-the-docs/_sass/custom/setup.scss new file mode 100644 index 00000000..c3b0a942 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/custom/setup.scss @@ -0,0 +1 @@ +// custom setup code goes here diff --git a/builder/vendor/just-the-docs/_sass/labels.scss b/builder/vendor/just-the-docs/_sass/labels.scss new file mode 100644 index 00000000..fdf714e5 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/labels.scss @@ -0,0 +1,37 @@ +// Labels (not the form kind) + +// this :not() prevents a style clash with Mermaid.js's +// diagram labels, which also use .label +// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272 +// and the accompanying PR +.label:not(g), +.label-blue:not(g) { + display: inline-block; + padding: 0.16em 0.56em; + margin-right: $sp-2; + margin-left: $sp-2; + color: $white; + text-transform: uppercase; + vertical-align: middle; + background-color: $blue-100; + border-radius: 12px; + + @include fs-2; +} + +.label-green:not(g) { + background-color: $green-200; +} + +.label-purple:not(g) { + background-color: $purple-100; +} + +.label-red:not(g) { + background-color: $red-200; +} + +.label-yellow:not(g) { + color: $grey-dk-200; + background-color: $yellow-200; +} diff --git a/builder/vendor/just-the-docs/_sass/layout.scss b/builder/vendor/just-the-docs/_sass/layout.scss new file mode 100644 index 00000000..4cc6ee4c --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/layout.scss @@ -0,0 +1,225 @@ +// The basic two column layout + +.side-bar { + z-index: 0; + display: flex; + flex-wrap: wrap; + background-color: $sidebar-color; + + @include mq(md) { + flex-flow: column nowrap; + position: fixed; + width: $nav-width-md; + height: 100%; + border-right: $border $border-color; + align-items: flex-end; + } + + @include mq(lg) { + width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); + min-width: $nav-width; + } + + & + .main { + @include mq(md) { + margin-left: $nav-width-md; + } + + @include mq(lg) { + // stylelint-disable function-name-case + // disable for Max(), we want to use the CSS max() function + margin-left: Max( + #{$nav-width}, + calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}) + ); + // stylelint-enable function-name-case + } + + .main-header { + display: none; + background-color: $sidebar-color; + + @include mq(md) { + display: flex; + background-color: $body-background-color; + } + + &.nav-open { + display: block; + + @include mq(md) { + display: flex; + } + } + } + } +} + +.main { + margin: auto; + + @include mq(md) { + position: relative; + max-width: $content-width; + } +} + +.main-content-wrap { + padding-top: $gutter-spacing-sm; + padding-bottom: $gutter-spacing-sm; + + @include container; + + @include mq(md) { + padding-top: $gutter-spacing; + padding-bottom: $gutter-spacing; + } +} + +.main-header { + z-index: 0; + border-bottom: $border $border-color; + + @include mq(md) { + display: flex; + justify-content: space-between; + height: $header-height; + } +} + +.site-nav, +.site-header, +.site-footer { + width: 100%; + + @include mq(lg) { + width: $nav-width; + } +} + +.site-nav { + display: none; + + &.nav-open { + display: block; + } + + @include mq(md) { + display: block; + padding-top: $sp-8; + padding-bottom: $gutter-spacing-sm; + overflow-y: auto; + flex: 1 1 auto; + } +} + +.site-header { + display: flex; + min-height: $header-height; + align-items: center; + + @include mq(md) { + height: $header-height; + max-height: $header-height; + border-bottom: $border $border-color; + } +} + +.site-title { + flex-grow: 1; + display: flex; + height: 100%; + align-items: center; + padding-top: $sp-3; + padding-bottom: $sp-3; + color: $body-heading-color; + + @include container; + + @include fs-6; + + @include mq(md) { + padding-top: $sp-2; + padding-bottom: $sp-2; + } +} + +@if variable-exists(logo) { + .site-logo { + width: 100%; + height: 100%; + background-image: url($logo); + background-repeat: no-repeat; + background-position: left center; + background-size: contain; + } +} + +.site-button { + display: flex; + height: 100%; + padding: $gutter-spacing-sm; + align-items: center; +} + +@include mq(md) { + .site-header .site-button { + display: none; + } +} + +.site-title:hover { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 80%, + rgba($feedback-color, 0) 100% + ); +} + +.site-button:hover { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 100% + ); +} + +// stylelint-disable selector-max-type + +body { + position: relative; + padding-bottom: $sp-10; + overflow-y: scroll; + + @include mq(md) { + position: static; + padding-bottom: 0; + } +} + +// stylelint-enable selector-max-type + +.site-footer { + position: absolute; + bottom: 0; + left: 0; + padding-top: $sp-4; + padding-bottom: $sp-4; + color: $grey-dk-000; + + @include container; + + @include fs-2; + + @include mq(md) { + position: static; + justify-self: end; + } +} + +.icon { + width: $sp-5; + height: $sp-5; + color: $link-color; +} diff --git a/builder/vendor/just-the-docs/_sass/modules.scss b/builder/vendor/just-the-docs/_sass/modules.scss new file mode 100644 index 00000000..ee282e73 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/modules.scss @@ -0,0 +1,17 @@ +// Import external dependencies +@import "./vendor/normalize.scss/normalize"; + +// Modules +@import "./base"; +@import "./layout"; +@import "./content"; +@import "./navigation"; +@import "./typography"; +@import "./labels"; +@import "./buttons"; +@import "./search"; +@import "./tables"; +@import "./code"; +@import "./utilities/utilities"; +@import "./print"; +@import "./skiptomain"; diff --git a/builder/vendor/just-the-docs/_sass/navigation.scss b/builder/vendor/just-the-docs/_sass/navigation.scss new file mode 100644 index 00000000..a99d9dce --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/navigation.scss @@ -0,0 +1,235 @@ +// Main nav, breadcrumb, etc... +// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity + +.nav-list { + padding: 0; + margin-top: 0; + margin-bottom: 0; + list-style: none; + + .nav-list-item { + position: relative; + margin: 0; + + @include fs-4; + + @include mq(md) { + @include fs-3; + } + + .nav-list-link { + display: block; + min-height: $nav-list-item-height-sm; + padding-top: $sp-1; + padding-bottom: $sp-1; + line-height: #{$nav-list-item-height-sm - 2 * $sp-1}; + @if $nav-list-expander-right { + padding-right: $nav-list-item-height-sm; + padding-left: $gutter-spacing-sm; + } @else { + padding-right: $gutter-spacing-sm; + padding-left: $nav-list-item-height-sm; + } + + @include mq(md) { + min-height: $nav-list-item-height; + line-height: #{$nav-list-item-height - 2 * $sp-1}; + @if $nav-list-expander-right { + padding-right: $nav-list-item-height; + padding-left: $gutter-spacing; + } @else { + padding-right: $gutter-spacing; + padding-left: $nav-list-item-height; + } + } + + &.external > svg { + width: $sp-4; + height: $sp-4; + vertical-align: text-bottom; + } + + &.active { + font-weight: 600; + text-decoration: none; + } + + &:hover, + &.active { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 80%, + rgba($feedback-color, 0) 100% + ); + } + } + + .nav-list-expander { + position: absolute; + @if $nav-list-expander-right { + right: 0; + } + + width: $nav-list-item-height-sm; + height: $nav-list-item-height-sm; + padding: #{$nav-list-item-height-sm * 0.25}; + color: $link-color; + + @include mq(md) { + width: $nav-list-item-height; + height: $nav-list-item-height; + padding: #{$nav-list-item-height * 0.25}; + } + + &:hover { + background-image: linear-gradient( + -90deg, + rgba($feedback-color, 1) 0%, + rgba($feedback-color, 0.8) 100% + ); + } + + @if $nav-list-expander-right { + svg { + transform: rotate(90deg); + } + } + } + + > .nav-list { + display: none; + padding-left: $sp-3; + list-style: none; + + .nav-list-item { + position: relative; + + .nav-list-link { + color: $nav-child-link-color; + } + + .nav-list-expander { + color: $nav-child-link-color; + } + } + } + + &.active { + > .nav-list-expander svg { + @if $nav-list-expander-right { + transform: rotate(-90deg); + } @else { + transform: rotate(90deg); + } + } + + > .nav-list { + display: block; + } + } + } +} + +.nav-category { + padding: $sp-2 $gutter-spacing-sm; + font-weight: 600; + text-align: start; + text-transform: uppercase; + border-bottom: $border $border-color; + @include fs-2; + + @include mq(md) { + padding: $sp-2 $gutter-spacing; + margin-top: $gutter-spacing-sm; + text-align: start; + + &:first-child { + margin-top: 0; + } + } +} + +.nav-list.nav-category-list { + > .nav-list-item { + margin: 0; + + > .nav-list { + padding: 0; + + > .nav-list-item { + > .nav-list-link { + color: $link-color; + } + + > .nav-list-expander { + color: $link-color; + } + } + } + } +} + +// Aux nav + +.aux-nav { + height: 100%; + overflow-x: auto; + @include fs-2; + + .aux-nav-list { + display: flex; + height: 100%; + padding: 0; + margin: 0; + list-style: none; + } + + .aux-nav-list-item { + display: inline-block; + height: 100%; + padding: 0; + margin: 0; + } + + @include mq(md) { + padding-right: $gutter-spacing-sm; + } +} + +// Breadcrumb nav + +.breadcrumb-nav { + @include mq(md) { + margin-top: -$sp-4; + } +} + +.breadcrumb-nav-list { + padding-left: 0; + margin-bottom: $sp-3; + list-style: none; +} + +.breadcrumb-nav-list-item { + display: table-cell; + @include fs-2; + + &::before { + display: none; + } + + &::after { + display: inline-block; + margin-right: $sp-2; + margin-left: $sp-2; + color: $grey-dk-000; + content: "/"; + } + + &:last-child { + &::after { + content: ""; + } + } +} diff --git a/builder/vendor/just-the-docs/_sass/print.scss b/builder/vendor/just-the-docs/_sass/print.scss new file mode 100644 index 00000000..ee76a3cc --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/print.scss @@ -0,0 +1,40 @@ +// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type + +@media print { + .site-footer, + .site-button, + #edit-this-page, + #back-to-top, + .site-nav, + .main-header { + display: none !important; + } + + .side-bar { + width: 100%; + height: auto; + border-right: 0 !important; + } + + .site-header { + border-bottom: 1px solid $border-color; + } + + .site-title { + font-size: 1rem !important; + font-weight: 700 !important; + } + + .text-small { + font-size: 8pt !important; + } + + pre.highlight { + border: 1px solid $border-color; + } + + .main { + max-width: none; + margin-left: 0; + } +} diff --git a/builder/vendor/just-the-docs/_sass/search.scss b/builder/vendor/just-the-docs/_sass/search.scss new file mode 100644 index 00000000..cdf8d6e1 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/search.scss @@ -0,0 +1,324 @@ +// Search input and autocomplete + +.search { + position: relative; + z-index: 2; + flex-grow: 1; + height: $sp-10; + padding: $sp-2; + transition: padding linear #{$transition-duration * 0.5}; + + @include mq(md) { + position: relative !important; + width: auto !important; + height: 100% !important; + padding: 0; + transition: none; + } +} + +.search-input-wrap { + position: relative; + z-index: 1; + height: $sp-8; + overflow: hidden; + border-radius: $border-radius; + box-shadow: + 0 1px 2px rgba(0, 0, 0, 0.12), + 0 3px 10px rgba(0, 0, 0, 0.08); + transition: height linear #{$transition-duration * 0.5}; + + @include mq(md) { + position: absolute; + width: 100%; + max-width: $search-results-width; + height: 100% !important; + border-radius: 0; + box-shadow: none; + transition: width ease $transition-duration; + } +} + +.search-input { + position: absolute; + width: 100%; + height: 100%; + padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5}; + font-size: 1rem; + color: $body-text-color; + background-color: $search-background-color; + border-top: 0; + border-right: 0; + border-bottom: 0; + border-left: 0; + border-radius: 0; + + @include mq(md) { + padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5}; + font-size: 0.875rem; + background-color: $body-background-color; + transition: padding-left linear #{$transition-duration * 0.5}; + } + + &:focus { + outline: 0; + + + .search-label .search-icon { + color: $link-color; + } + } +} + +.search-label { + position: absolute; + display: flex; + height: 100%; + padding-left: $gutter-spacing-sm; + + @include mq(md) { + padding-left: $gutter-spacing; + transition: padding-left linear #{$transition-duration * 0.5}; + } + + .search-icon { + width: #{$sp-4 * 1.2}; + height: #{$sp-4 * 1.2}; + align-self: center; + color: $grey-dk-000; + } +} + +.search-results { + position: absolute; + left: 0; + display: none; + width: 100%; + max-height: calc(100% - #{$sp-10}); + overflow-y: auto; + background-color: $search-background-color; + border-bottom-right-radius: $border-radius; + border-bottom-left-radius: $border-radius; + box-shadow: + 0 1px 2px rgba(0, 0, 0, 0.12), + 0 3px 10px rgba(0, 0, 0, 0.08); + + @include mq(md) { + top: 100%; + width: $search-results-width; + max-height: calc(100vh - 200%) !important; + } +} + +.search-results-list { + padding-left: 0; + margin-bottom: $sp-1; + list-style: none; + @include fs-4; + + @include mq(md) { + @include fs-3; + } +} + +.search-results-list-item { + padding: 0; + margin: 0; +} + +.search-result { + display: block; + padding: $sp-1 $sp-3; + + &:hover, + &.active { + background-color: $feedback-color; + } +} + +.search-result-title { + display: block; + padding-top: $sp-2; + padding-bottom: $sp-2; + + @include mq(sm) { + display: inline-block; + width: 40%; + padding-right: $sp-2; + vertical-align: top; + } +} + +.search-result-doc { + display: flex; + align-items: center; + word-wrap: break-word; + + &.search-result-doc-parent { + opacity: 0.5; + @include fs-3; + + @include mq(md) { + @include fs-2; + } + } + + .search-result-icon { + width: $sp-4; + height: $sp-4; + margin-right: $sp-2; + color: $link-color; + flex-shrink: 0; + } + + .search-result-doc-title { + overflow: auto; + } +} + +.search-result-section { + margin-left: #{$sp-4 + $sp-2}; + word-wrap: break-word; +} + +.search-result-rel-url { + display: block; + margin-left: #{$sp-4 + $sp-2}; + overflow: hidden; + color: $search-result-preview-color; + text-overflow: ellipsis; + white-space: nowrap; + @include fs-1; +} + +.search-result-previews { + display: block; + padding-top: $sp-2; + padding-bottom: $sp-2; + padding-left: $sp-4; + margin-left: $sp-2; + color: $search-result-preview-color; + word-wrap: break-word; + border-left: $border; + border-left-color: $border-color; + @include fs-2; + + @include mq(sm) { + display: inline-block; + width: 60%; + padding-left: $sp-2; + margin-left: 0; + vertical-align: top; + } +} + +.search-result-preview + .search-result-preview { + margin-top: $sp-1; +} + +.search-result-highlight { + font-weight: bold; +} + +.search-no-result { + padding: $sp-2 $sp-3; + @include fs-3; +} + +.search-button { + position: fixed; + right: $sp-4; + bottom: $sp-4; + display: flex; + width: $sp-9; + height: $sp-9; + background-color: $search-background-color; + border: 1px solid rgba($link-color, 0.3); + border-radius: #{$sp-9 * 0.5}; + box-shadow: + 0 1px 2px rgba(0, 0, 0, 0.12), + 0 3px 10px rgba(0, 0, 0, 0.08); + align-items: center; + justify-content: center; +} + +.search-overlay { + position: fixed; + top: 0; + left: 0; + z-index: 1; + width: 0; + height: 0; + background-color: rgba(0, 0, 0, 0.3); + opacity: 0; + transition: + opacity ease $transition-duration, + width 0s $transition-duration, + height 0s $transition-duration; +} + +.search-active { + .search { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 0; + } + + .search-input-wrap { + height: $sp-10; + border-radius: 0; + + @include mq(md) { + width: $search-results-width; + box-shadow: + 0 1px 2px rgba(0, 0, 0, 0.12), + 0 3px 10px rgba(0, 0, 0, 0.08); + } + } + + .search-input { + background-color: $search-background-color; + + @include mq(md) { + padding-left: 2.3rem; + } + } + + .search-label { + @include mq(md) { + padding-left: 0.6rem; + } + } + + .search-results { + display: block; + } + + .search-overlay { + width: 100%; + height: 100%; + opacity: 1; + transition: + opacity ease $transition-duration, + width 0s, + height 0s; + } + + @include mq(md) { + .main { + position: fixed; + right: 0; + left: 0; + } + } + + .main-header { + padding-top: $sp-10; + + @include mq(md) { + padding-top: 0; + } + } +} diff --git a/builder/vendor/just-the-docs/_sass/skiptomain.scss b/builder/vendor/just-the-docs/_sass/skiptomain.scss new file mode 100644 index 00000000..7c14f057 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/skiptomain.scss @@ -0,0 +1,30 @@ +// Skipnav +// Skip to main content + +a.skip-to-main { + left: -999px; + position: absolute; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; + z-index: -999; +} + +a.skip-to-main:focus, +a.skip-to-main:active { + color: $link-color; + background-color: $body-background-color; + left: auto; + top: auto; + width: 30%; + height: auto; + overflow: auto; + margin: 10px 35%; + padding: 5px; + border-radius: 15px; + border: 4px solid $btn-primary-color; + text-align: center; + font-size: 1.2em; + z-index: 999; +} diff --git a/builder/vendor/just-the-docs/_sass/support/_variables.scss b/builder/vendor/just-the-docs/_sass/support/_variables.scss new file mode 100644 index 00000000..0b051ffe --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/support/_variables.scss @@ -0,0 +1,117 @@ +// Typography + +// prettier-ignore +$body-font-family: system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", + roboto, "Helvetica Neue", arial, sans-serif, "Segoe UI Emoji" !default; +$mono-font-family: "SFMono-Regular", menlo, consolas, monospace !default; +$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems +$body-line-height: 1.4 !default; +$content-line-height: 1.6 !default; +$body-heading-line-height: 1.25 !default; + +// Font size +// `-sm` suffix is the size at the small (and above) media query + +$font-size-1: 0.5625rem !default; +$font-size-1-sm: 0.625rem !default; +$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small +$font-size-3: 0.75rem !default; // h5 +$font-size-4: 0.875rem !default; +$font-size-5: 1rem !default; // h3 +$font-size-6: 1.125rem !default; // h2 +$font-size-7: 1.5rem !default; +$font-size-8: 2rem !default; // h1 +$font-size-9: 2.25rem !default; +$font-size-10: 2.625rem !default; +$font-size-10-sm: 3rem !default; + +// Colors + +$white: #fff !default; +$grey-dk-000: #959396 !default; +$grey-dk-100: #5c5962 !default; +$grey-dk-200: #44434d !default; +$grey-dk-250: #302d36 !default; +$grey-dk-300: #27262b !default; +$grey-lt-000: #f5f6fa !default; +$grey-lt-100: #eeebee !default; +$grey-lt-200: #ecebed !default; +$grey-lt-300: #e6e1e8 !default; +$purple-000: #7253ed !default; +$purple-100: #5e41d0 !default; +$purple-200: #4e26af !default; +$purple-300: #381885 !default; +$blue-000: #2c84fa !default; +$blue-100: #2869e6 !default; +$blue-200: #264caf !default; +$blue-300: #183385 !default; +$green-000: #41d693 !default; +$green-100: #11b584 !default; +$green-200: #009c7b !default; +$green-300: #026e57 !default; +$yellow-000: #ffeb82 !default; +$yellow-100: #fadf50 !default; +$yellow-200: #f7d12e !default; +$yellow-300: #e7af06 !default; +$red-000: #f77e7e !default; +$red-100: #f96e65 !default; +$red-200: #e94c4c !default; +$red-300: #dd2e2e !default; + +// Spacing + +$spacing-unit: 1rem; // 1rem == 16px + +$spacers: ( + sp-0: 0, + sp-1: $spacing-unit * 0.25, + sp-2: $spacing-unit * 0.5, + sp-3: $spacing-unit * 0.75, + sp-4: $spacing-unit, + sp-5: $spacing-unit * 1.5, + sp-6: $spacing-unit * 2, + sp-7: $spacing-unit * 2.5, + sp-8: $spacing-unit * 3, + sp-9: $spacing-unit * 3.5, + sp-10: $spacing-unit * 4, +) !default; +$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px +$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px +$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px +$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px +$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px +$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px +$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px +$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px +$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px +$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px + +// Borders + +$border: 1px solid !default; +$border-radius: 4px !default; +$border-color: $grey-lt-100 !default; + +// Grid system + +$gutter-spacing: $sp-6 !default; +$gutter-spacing-sm: $sp-4 !default; +$nav-width: 16.5rem !default; +$nav-width-md: 15.5rem !default; +$nav-list-item-height: $sp-6 !default; +$nav-list-item-height-sm: $sp-8 !default; +$nav-list-expander-right: true; +$content-width: 50rem !default; +$header-height: 3.75rem !default; +$search-results-width: $content-width - $nav-width !default; +$transition-duration: 400ms; + +// Media queries in pixels + +$media-queries: ( + xs: 20rem, + sm: 31.25rem, + md: $content-width, + lg: $content-width + $nav-width, + xl: 87.5rem, +) !default; diff --git a/builder/vendor/just-the-docs/_sass/support/mixins/_buttons.scss b/builder/vendor/just-the-docs/_sass/support/mixins/_buttons.scss new file mode 100644 index 00000000..cd51da36 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/support/mixins/_buttons.scss @@ -0,0 +1,29 @@ +// Colored button + +@mixin btn-color($fg, $bg) { + color: $fg; + background-color: darken($bg, 2%); + background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.25), + 0 4px 10px rgba(0, 0, 0, 0.12); + + &:hover, + &.zeroclipboard-is-hover { + color: $fg; + background-color: darken($bg, 4%); + background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); + } + + &:active, + &.selected, + &.zeroclipboard-is-active { + background-color: darken($bg, 5%); + background-image: none; + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); + } + + &.selected:hover { + background-color: darken($bg, 10%); + } +} diff --git a/builder/vendor/just-the-docs/_sass/support/mixins/_layout.scss b/builder/vendor/just-the-docs/_sass/support/mixins/_layout.scss new file mode 100644 index 00000000..a9b32ee4 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/support/mixins/_layout.scss @@ -0,0 +1,33 @@ +// Media query + +// Media query mixin +// Usage: +// @include mq(md) { +// ..medium and up styles +// } +@mixin mq($name) { + // Retrieves the value from the key + $value: map-get($media-queries, $name); + + // If the key exists in the map + @if $value { + // Prints a media query based on the value + @media (min-width: $value) { + @content; + } + } @else { + @warn "No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map."; + } +} + +// Responsive container + +@mixin container { + padding-right: $gutter-spacing-sm; + padding-left: $gutter-spacing-sm; + + @include mq(md) { + padding-right: $gutter-spacing; + padding-left: $gutter-spacing; + } +} diff --git a/builder/vendor/just-the-docs/_sass/support/mixins/_typography.scss b/builder/vendor/just-the-docs/_sass/support/mixins/_typography.scss new file mode 100644 index 00000000..760b0e9a --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/support/mixins/_typography.scss @@ -0,0 +1,104 @@ +@mixin fs-1 { + & { + font-size: $font-size-1 !important; + } + + @include mq(sm) { + font-size: $font-size-1-sm !important; + } +} + +@mixin fs-2 { + & { + font-size: $font-size-2 !important; + } + + @include mq(sm) { + font-size: $font-size-3 !important; + } +} + +@mixin fs-3 { + & { + font-size: $font-size-3 !important; + } + + @include mq(sm) { + font-size: $font-size-4 !important; + } +} + +@mixin fs-4 { + & { + font-size: $font-size-4 !important; + } + + @include mq(sm) { + font-size: $font-size-5 !important; + } +} + +@mixin fs-5 { + & { + font-size: $font-size-5 !important; + } + + @include mq(sm) { + font-size: $font-size-6 !important; + } +} + +@mixin fs-6 { + & { + font-size: $font-size-6 !important; + } + + @include mq(sm) { + font-size: $font-size-7 !important; + line-height: $body-heading-line-height; + } +} + +@mixin fs-7 { + & { + font-size: $font-size-7 !important; + line-height: $body-heading-line-height; + } + + @include mq(sm) { + font-size: $font-size-8 !important; + } +} + +@mixin fs-8 { + & { + font-size: $font-size-8 !important; + line-height: $body-heading-line-height; + } + + @include mq(sm) { + font-size: $font-size-9 !important; + } +} + +@mixin fs-9 { + & { + font-size: $font-size-9 !important; + line-height: $body-heading-line-height; + } + + @include mq(sm) { + font-size: $font-size-10 !important; + } +} + +@mixin fs-10 { + & { + font-size: $font-size-10 !important; + line-height: $body-heading-line-height; + } + + @include mq(sm) { + font-size: $font-size-10-sm !important; + } +} diff --git a/builder/vendor/just-the-docs/_sass/support/mixins/mixins.scss b/builder/vendor/just-the-docs/_sass/support/mixins/mixins.scss new file mode 100644 index 00000000..0506fbf5 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/support/mixins/mixins.scss @@ -0,0 +1,3 @@ +@import "./layout"; +@import "./buttons"; +@import "./typography"; diff --git a/builder/vendor/just-the-docs/_sass/support/support.scss b/builder/vendor/just-the-docs/_sass/support/support.scss new file mode 100644 index 00000000..e8005929 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/support/support.scss @@ -0,0 +1,2 @@ +@import "./variables"; +@import "./mixins/mixins"; diff --git a/builder/vendor/just-the-docs/_sass/tables.scss b/builder/vendor/just-the-docs/_sass/tables.scss new file mode 100644 index 00000000..3574323c --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/tables.scss @@ -0,0 +1,56 @@ +// Tables +// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type + +.table-wrapper { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: $sp-5; + overflow-x: auto; + border-radius: $border-radius; + box-shadow: + 0 1px 2px rgba(0, 0, 0, 0.12), + 0 3px 10px rgba(0, 0, 0, 0.08); +} + +table { + display: table; + min-width: 100%; + border-collapse: separate; +} + +th, +td { + min-width: 7.5rem; + padding: $sp-2 $sp-3; + background-color: $table-background-color; + border-bottom: $border rgba($border-color, 0.5); + border-left: $border $border-color; + + @include fs-3; + + &:first-of-type { + border-left: 0; + } +} + +tbody { + tr { + &:last-of-type { + th, + td { + border-bottom: 0; + } + + td { + padding-bottom: $sp-3; + } + } + } +} + +thead { + th { + border-bottom: $border $border-color; + } +} diff --git a/builder/vendor/just-the-docs/_sass/typography.scss b/builder/vendor/just-the-docs/_sass/typography.scss new file mode 100644 index 00000000..0d0eaf22 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/typography.scss @@ -0,0 +1,63 @@ +// Typography +// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id + +h1, +.text-alpha { + font-weight: 300; + + @include fs-8; +} + +h2, +.text-beta, +#toctitle { + @include fs-6; +} + +h3, +.text-gamma { + @include fs-5; +} + +h4, +.text-delta { + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.1em; + + @include fs-2; +} + +h4 code { + text-transform: none; +} + +h5, +.text-epsilon { + @include fs-3; +} + +h6, +.text-zeta { + @include fs-2; +} + +.text-small { + @include fs-2; +} + +.text-mono { + font-family: $mono-font-family !important; +} + +.text-left { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +.text-right { + text-align: right !important; +} diff --git a/builder/vendor/just-the-docs/_sass/utilities/_colors.scss b/builder/vendor/just-the-docs/_sass/utilities/_colors.scss new file mode 100644 index 00000000..9025649c --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/utilities/_colors.scss @@ -0,0 +1,237 @@ +// Utility classes for colors + +// Text colors + +.text-grey-dk-000 { + color: $grey-dk-000 !important; +} + +.text-grey-dk-100 { + color: $grey-dk-100 !important; +} + +.text-grey-dk-200 { + color: $grey-dk-200 !important; +} + +.text-grey-dk-250 { + color: $grey-dk-250 !important; +} + +.text-grey-dk-300 { + color: $grey-dk-300 !important; +} + +.text-grey-lt-000 { + color: $grey-lt-000 !important; +} + +.text-grey-lt-100 { + color: $grey-lt-100 !important; +} + +.text-grey-lt-200 { + color: $grey-lt-200 !important; +} + +.text-grey-lt-300 { + color: $grey-lt-300 !important; +} + +.text-blue-000 { + color: $blue-000 !important; +} + +.text-blue-100 { + color: $blue-100 !important; +} + +.text-blue-200 { + color: $blue-200 !important; +} + +.text-blue-300 { + color: $blue-300 !important; +} + +.text-green-000 { + color: $green-000 !important; +} + +.text-green-100 { + color: $green-100 !important; +} + +.text-green-200 { + color: $green-200 !important; +} + +.text-green-300 { + color: $green-300 !important; +} + +.text-purple-000 { + color: $purple-000 !important; +} + +.text-purple-100 { + color: $purple-100 !important; +} + +.text-purple-200 { + color: $purple-200 !important; +} + +.text-purple-300 { + color: $purple-300 !important; +} + +.text-yellow-000 { + color: $yellow-000 !important; +} + +.text-yellow-100 { + color: $yellow-100 !important; +} + +.text-yellow-200 { + color: $yellow-200 !important; +} + +.text-yellow-300 { + color: $yellow-300 !important; +} + +.text-red-000 { + color: $red-000 !important; +} + +.text-red-100 { + color: $red-100 !important; +} + +.text-red-200 { + color: $red-200 !important; +} + +.text-red-300 { + color: $red-300 !important; +} + +// Background colors + +.bg-grey-dk-000 { + background-color: $grey-dk-000 !important; +} + +.bg-grey-dk-100 { + background-color: $grey-dk-100 !important; +} + +.bg-grey-dk-200 { + background-color: $grey-dk-200 !important; +} + +.bg-grey-dk-250 { + background-color: $grey-dk-250 !important; +} + +.bg-grey-dk-300 { + background-color: $grey-dk-300 !important; +} + +.bg-grey-lt-000 { + background-color: $grey-lt-000 !important; +} + +.bg-grey-lt-100 { + background-color: $grey-lt-100 !important; +} + +.bg-grey-lt-200 { + background-color: $grey-lt-200 !important; +} + +.bg-grey-lt-300 { + background-color: $grey-lt-300 !important; +} + +.bg-blue-000 { + background-color: $blue-000 !important; +} + +.bg-blue-100 { + background-color: $blue-100 !important; +} + +.bg-blue-200 { + background-color: $blue-200 !important; +} + +.bg-blue-300 { + background-color: $blue-300 !important; +} + +.bg-green-000 { + background-color: $green-000 !important; +} + +.bg-green-100 { + background-color: $green-100 !important; +} + +.bg-green-200 { + background-color: $green-200 !important; +} + +.bg-green-300 { + background-color: $green-300 !important; +} + +.bg-purple-000 { + background-color: $purple-000 !important; +} + +.bg-purple-100 { + background-color: $purple-100 !important; +} + +.bg-purple-200 { + background-color: $purple-200 !important; +} + +.bg-purple-300 { + background-color: $purple-300 !important; +} + +.bg-yellow-000 { + background-color: $yellow-000 !important; +} + +.bg-yellow-100 { + background-color: $yellow-100 !important; +} + +.bg-yellow-200 { + background-color: $yellow-200 !important; +} + +.bg-yellow-300 { + background-color: $yellow-300 !important; +} + +.bg-red-000 { + background-color: $red-000 !important; +} + +.bg-red-100 { + background-color: $red-100 !important; +} + +.bg-red-200 { + background-color: $red-200 !important; +} + +.bg-red-300 { + background-color: $red-300 !important; +} diff --git a/builder/vendor/just-the-docs/_sass/utilities/_layout.scss b/builder/vendor/just-the-docs/_sass/utilities/_layout.scss new file mode 100644 index 00000000..01a57c5e --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/utilities/_layout.scss @@ -0,0 +1,101 @@ +// Utility classes for layout + +// Display + +.d-block { + display: block !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-none { + display: none !important; +} + +@each $media-query in map-keys($media-queries) { + @for $i from 1 through length($spacers) { + @include mq($media-query) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .d-sm-block, .d-md-none, .d-lg-inline + .d-#{$media-query}-block { + display: block !important; + } + .d-#{$media-query}-flex { + display: flex !important; + } + .d-#{$media-query}-inline { + display: inline !important; + } + .d-#{$media-query}-inline-block { + display: inline-block !important; + } + .d-#{$media-query}-none { + display: none !important; + } + } + } +} + +// Horizontal alignment + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.flex-justify-start { + justify-content: flex-start !important; +} + +.flex-justify-end { + justify-content: flex-end !important; +} + +.flex-justify-between { + justify-content: space-between !important; +} + +.flex-justify-around { + justify-content: space-around !important; +} + +// Vertical alignment + +.v-align-baseline { + vertical-align: baseline !important; +} + +.v-align-bottom { + vertical-align: bottom !important; +} + +.v-align-middle { + vertical-align: middle !important; +} + +.v-align-text-bottom { + vertical-align: text-bottom !important; +} + +.v-align-text-top { + vertical-align: text-top !important; +} + +.v-align-top { + vertical-align: top !important; +} diff --git a/builder/vendor/just-the-docs/_sass/utilities/_lists.scss b/builder/vendor/just-the-docs/_sass/utilities/_lists.scss new file mode 100644 index 00000000..3adc4217 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/utilities/_lists.scss @@ -0,0 +1,15 @@ +// Utility classes for lists + +// stylelint-disable selector-max-type + +.list-style-none { + padding: 0 !important; + margin: 0 !important; + list-style: none !important; + + li { + &::before { + display: none !important; + } + } +} diff --git a/builder/vendor/just-the-docs/_sass/utilities/_spacing.scss b/builder/vendor/just-the-docs/_sass/utilities/_spacing.scss new file mode 100644 index 00000000..a8118613 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/utilities/_spacing.scss @@ -0,0 +1,162 @@ +// Utility classes for margins and padding + +// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before + +// Margin spacer utilities + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +@for $i from 1 through length($spacers) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .m-0, .m-1, .m-2... + .m-#{$scale} { + margin: #{$size} !important; + } + .mt-#{$scale} { + margin-top: #{$size} !important; + } + .mr-#{$scale} { + margin-right: #{$size} !important; + } + .mb-#{$scale} { + margin-bottom: #{$size} !important; + } + .ml-#{$scale} { + margin-left: #{$size} !important; + } + + .mx-#{$scale} { + margin-right: #{$size} !important; + margin-left: #{$size} !important; + } + + .my-#{$scale} { + margin-top: #{$size} !important; + margin-bottom: #{$size} !important; + } + + .mxn-#{$scale} { + margin-right: -#{$size} !important; + margin-left: -#{$size} !important; + } + .mx-#{$scale}-auto { + margin-right: auto !important; + margin-left: auto !important; + } +} + +@each $media-query in map-keys($media-queries) { + @for $i from 1 through length($spacers) { + @include mq($media-query) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .m-sm-0, .m-md-1, .m-lg-2... + .m-#{$media-query}-#{$scale} { + margin: #{$size} !important; + } + .mt-#{$media-query}-#{$scale} { + margin-top: #{$size} !important; + } + .mr-#{$media-query}-#{$scale} { + margin-right: #{$size} !important; + } + .mb-#{$media-query}-#{$scale} { + margin-bottom: #{$size} !important; + } + .ml-#{$media-query}-#{$scale} { + margin-left: #{$size} !important; + } + + .mx-#{$media-query}-#{$scale} { + margin-right: #{$size} !important; + margin-left: #{$size} !important; + } + + .my-#{$media-query}-#{$scale} { + margin-top: #{$size} !important; + margin-bottom: #{$size} !important; + } + + .mxn-#{$media-query}-#{$scale} { + margin-right: -#{$size} !important; + margin-left: -#{$size} !important; + } + } + } +} + +// Padding spacer utilities + +@for $i from 1 through length($spacers) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .p-0, .p-1, .p-2... + .p-#{$scale} { + padding: #{$size} !important; + } + .pt-#{$scale} { + padding-top: #{$size} !important; + } + .pr-#{$scale} { + padding-right: #{$size} !important; + } + .pb-#{$scale} { + padding-bottom: #{$size} !important; + } + .pl-#{$scale} { + padding-left: #{$size} !important; + } + + .px-#{$scale} { + padding-right: #{$size} !important; + padding-left: #{$size} !important; + } + + .py-#{$scale} { + padding-top: #{$size} !important; + padding-bottom: #{$size} !important; + } +} + +@each $media-query in map-keys($media-queries) { + @include mq($media-query) { + @for $i from 1 through length($spacers) { + $size: #{map-get($spacers, sp-#{$i - 1})}; + $scale: #{$i - 1}; + + // .p-sm-0, .p-md-1, .p-lg-2... + .p-#{$media-query}-#{$scale} { + padding: #{$size} !important; + } + .pt-#{$media-query}-#{$scale} { + padding-top: #{$size} !important; + } + .pr-#{$media-query}-#{$scale} { + padding-right: #{$size} !important; + } + .pb-#{$media-query}-#{$scale} { + padding-bottom: #{$size} !important; + } + .pl-#{$media-query}-#{$scale} { + padding-left: #{$size} !important; + } + + .px-#{$media-query}-#{$scale} { + padding-right: #{$size} !important; + padding-left: #{$size} !important; + } + + .py-#{$media-query}-#{$scale} { + padding-top: #{$size} !important; + padding-bottom: #{$size} !important; + } + } + } +} diff --git a/builder/vendor/just-the-docs/_sass/utilities/_typography.scss b/builder/vendor/just-the-docs/_sass/utilities/_typography.scss new file mode 100644 index 00000000..33f1db9e --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/utilities/_typography.scss @@ -0,0 +1,85 @@ +// Utility classes for typography + +.fs-1 { + @include fs-1; +} + +.fs-2 { + @include fs-2; +} + +.fs-3 { + @include fs-3; +} + +.fs-4 { + @include fs-4; +} + +.fs-5 { + @include fs-5; +} + +.fs-6 { + @include fs-6; +} + +.fs-7 { + @include fs-7; +} + +.fs-8 { + @include fs-8; +} + +.fs-9 { + @include fs-9; +} + +.fs-10 { + @include fs-10; +} + +.fw-300 { + font-weight: 300 !important; +} + +.fw-400 { + font-weight: 400 !important; +} + +.fw-500 { + font-weight: 500 !important; +} + +.fw-700 { + font-weight: 700 !important; +} + +.lh-0 { + line-height: 0 !important; +} + +.lh-default { + line-height: $body-line-height; +} + +.lh-tight { + line-height: $body-heading-line-height; +} + +.ls-5 { + letter-spacing: 0.05em !important; +} + +.ls-10 { + letter-spacing: 0.1em !important; +} + +.ls-0 { + letter-spacing: 0 !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} diff --git a/builder/vendor/just-the-docs/_sass/utilities/utilities.scss b/builder/vendor/just-the-docs/_sass/utilities/utilities.scss new file mode 100644 index 00000000..6c25bdfa --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/utilities/utilities.scss @@ -0,0 +1,5 @@ +@import "./colors"; +@import "./layout"; +@import "./typography"; +@import "./lists"; +@import "./spacing"; diff --git a/builder/vendor/just-the-docs/_sass/vendor/OneDarkJekyll/LICENSE b/builder/vendor/just-the-docs/_sass/vendor/OneDarkJekyll/LICENSE new file mode 100644 index 00000000..01d0dfb2 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/vendor/OneDarkJekyll/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Mihály Gyöngyösi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/builder/vendor/just-the-docs/_sass/vendor/OneDarkJekyll/syntax.scss b/builder/vendor/just-the-docs/_sass/vendor/OneDarkJekyll/syntax.scss new file mode 100644 index 00000000..bf7eb524 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/vendor/OneDarkJekyll/syntax.scss @@ -0,0 +1,265 @@ +// Generated with OneDarkJekyll applied to Atom's One Dark Vivid theme + +.highlight, +pre.highlight { + background: #31343f; + color: #dee2f7; +} + +.highlight pre { + background: #31343f; +} + +.highlight .hll { + background: #31343f; +} + +.highlight .c { + color: #63677e; + font-style: italic; +} + +.highlight .err { + color: #960050; + background-color: #1e0010; +} + +.highlight .k { + color: #e19ef5; +} + +.highlight .l { + color: #a3eea0; +} + +.highlight .n { + color: #dee2f7; +} + +.highlight .o { + color: #dee2f7; +} + +.highlight .p { + color: #dee2f7; +} + +.highlight .cm { + color: #63677e; + font-style: italic; +} + +.highlight .cp { + color: #63677e; + font-style: italic; +} + +.highlight .c1 { + color: #63677e; + font-style: italic; +} + +.highlight .cs { + color: #63677e; + font-style: italic; +} + +.highlight .ge { + font-style: italic; +} + +.highlight .gs { + font-weight: 700; +} + +.highlight .kc { + color: #e19ef5; +} + +.highlight .kd { + color: #e19ef5; +} + +.highlight .kn { + color: #e19ef5; +} + +.highlight .kp { + color: #e19ef5; +} + +.highlight .kr { + color: #e19ef5; +} + +.highlight .kt { + color: #e19ef5; +} + +.highlight .ld { + color: #a3eea0; +} + +.highlight .m { + color: #eddc96; +} + +.highlight .s { + color: #a3eea0; +} + +.highlight .na { + color: #eddc96; +} + +.highlight .nb { + color: #fdce68; +} + +.highlight .nc { + color: #fdce68; +} + +.highlight .no { + color: #fdce68; +} + +.highlight .nd { + color: #fdce68; +} + +.highlight .ni { + color: #fdce68; +} + +.highlight .ne { + color: #fdce68; +} + +.highlight .nf { + color: #dee2f7; +} + +.highlight .nl { + color: #fdce68; +} + +.highlight .nn { + color: #dee2f7; +} + +.highlight .nx { + color: #dee2f7; +} + +.highlight .py { + color: #fdce68; +} + +.highlight .nt { + color: #f9867b; +} + +.highlight .nv { + color: #fdce68; +} + +.highlight .ow { + font-weight: 700; +} + +.highlight .w { + color: #f8f8f2; +} + +.highlight .mf { + color: #eddc96; +} + +.highlight .mh { + color: #eddc96; +} + +.highlight .mi { + color: #eddc96; +} + +.highlight .mo { + color: #eddc96; +} + +.highlight .sb { + color: #a3eea0; +} + +.highlight .sc { + color: #a3eea0; +} + +.highlight .sd { + color: #a3eea0; +} + +.highlight .s2 { + color: #a3eea0; +} + +.highlight .se { + color: #a3eea0; +} + +.highlight .sh { + color: #a3eea0; +} + +.highlight .si { + color: #a3eea0; +} + +.highlight .sx { + color: #a3eea0; +} + +.highlight .sr { + color: #7be2f9; +} + +.highlight .s1 { + color: #a3eea0; +} + +.highlight .ss { + color: #7be2f9; +} + +.highlight .bp { + color: #fdce68; +} + +.highlight .vc { + color: #fdce68; +} + +.highlight .vg { + color: #fdce68; +} + +.highlight .vi { + color: #f9867b; +} + +.highlight .il { + color: #eddc96; +} + +.highlight .gu { + color: #75715e; +} + +.highlight .gd { + color: #f92672; +} + +.highlight .gi { + color: #a6e22e; +} diff --git a/builder/vendor/just-the-docs/_sass/vendor/OneLightJekyll/LICENSE b/builder/vendor/just-the-docs/_sass/vendor/OneLightJekyll/LICENSE new file mode 100644 index 00000000..df5eca00 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/vendor/OneLightJekyll/LICENSE @@ -0,0 +1,65 @@ +OneLightJekyll relies on two works: OneDarkJekyll, and Atom's One Light theme. This file contains the licensing for all the related software. + +--- + +OneLightJekyll (https://github.com/just-the-docs/OneLightJekyll/blob/main/LICENSE) + +MIT License + +Copyright (c) 2023 Matthew Wang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +OneDarkJekyll (https://github.com/mgyongyosi/OneDarkJekyll/blob/master/LICENSE) + +MIT License + +Copyright (c) 2016 Mihály Gyöngyösi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +Atom One Light (https://github.com/atom/atom/blob/master/LICENSE.md) + +Copyright (c) 2011-2022 GitHub Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/builder/vendor/just-the-docs/_sass/vendor/OneLightJekyll/syntax.scss b/builder/vendor/just-the-docs/_sass/vendor/OneLightJekyll/syntax.scss new file mode 100644 index 00000000..d69a534a --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/vendor/OneLightJekyll/syntax.scss @@ -0,0 +1,273 @@ +// Generated with OneLightJekyll applied to Atom's One Light theme + +.highlight, +pre.highlight { + background: #f9f9f9; + color: #383942; +} + +.highlight pre { + background: #f9f9f9; +} + +.highlight .hll { + background: #f9f9f9; +} + +.highlight .c { + color: #9fa0a6; + font-style: italic; +} + +.highlight .err { + color: #fff; + background-color: #e05151; +} + +.highlight .k { + color: #a625a4; +} + +.highlight .l { + color: #50a04f; +} + +.highlight .n { + color: #383942; +} + +.highlight .o { + color: #383942; +} + +.highlight .p { + color: #383942; +} + +.highlight .cm { + color: #9fa0a6; + font-style: italic; +} + +.highlight .cp { + color: #9fa0a6; + font-style: italic; +} + +.highlight .c1 { + color: #9fa0a6; + font-style: italic; +} + +.highlight .cs { + color: #9fa0a6; + font-style: italic; +} + +.highlight .ge { + font-style: italic; +} + +.highlight .gs { + font-weight: 700; +} + +.highlight .kc { + color: #a625a4; +} + +.highlight .kd { + color: #a625a4; +} + +.highlight .kn { + color: #a625a4; +} + +.highlight .kp { + color: #a625a4; +} + +.highlight .kr { + color: #a625a4; +} + +.highlight .kt { + color: #a625a4; +} + +.highlight .ld { + color: #50a04f; +} + +.highlight .m { + color: #b66a00; +} + +.highlight .s { + color: #50a04f; +} + +.highlight .na { + color: #b66a00; +} + +.highlight .nb { + color: #ca7601; +} + +.highlight .nc { + color: #ca7601; +} + +.highlight .no { + color: #ca7601; +} + +.highlight .nd { + color: #ca7601; +} + +.highlight .ni { + color: #ca7601; +} + +.highlight .ne { + color: #ca7601; +} + +.highlight .nf { + color: #383942; +} + +.highlight .nl { + color: #ca7601; +} + +.highlight .nn { + color: #383942; +} + +.highlight .nx { + color: #383942; +} + +.highlight .py { + color: #ca7601; +} + +.highlight .nt { + color: #e35549; +} + +.highlight .nv { + color: #ca7601; +} + +.highlight .ow { + font-weight: 700; +} + +.highlight .w { + color: #f8f8f2; +} + +.highlight .mf { + color: #b66a00; +} + +.highlight .mh { + color: #b66a00; +} + +.highlight .mi { + color: #b66a00; +} + +.highlight .mo { + color: #b66a00; +} + +.highlight .sb { + color: #50a04f; +} + +.highlight .sc { + color: #50a04f; +} + +.highlight .sd { + color: #50a04f; +} + +.highlight .s2 { + color: #50a04f; +} + +.highlight .se { + color: #50a04f; +} + +.highlight .sh { + color: #50a04f; +} + +.highlight .si { + color: #50a04f; +} + +.highlight .sx { + color: #50a04f; +} + +.highlight .sr { + color: #0083bb; +} + +.highlight .s1 { + color: #50a04f; +} + +.highlight .ss { + color: #0083bb; +} + +.highlight .bp { + color: #ca7601; +} + +.highlight .vc { + color: #ca7601; +} + +.highlight .vg { + color: #ca7601; +} + +.highlight .vi { + color: #e35549; +} + +.highlight .il { + color: #b66a00; +} + +.highlight .gu { + color: #75715e; +} + +.highlight .gd { + color: #e05151; +} + +.highlight .gi { + color: #43d089; +} + +.highlight .language-json .w + .s2 { + color: #e35549; +} + +.highlight .language-json .kc { + color: #0083bb; +} diff --git a/builder/vendor/just-the-docs/_sass/vendor/normalize.scss/README.md b/builder/vendor/just-the-docs/_sass/vendor/normalize.scss/README.md new file mode 100644 index 00000000..7af1714a --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/vendor/normalize.scss/README.md @@ -0,0 +1,7 @@ +# normalize.scss + +Normalize.scss is an SCSS copy of [normalize.css](http://necolas.github.io/normalize.css), a customisable CSS file that makes browsers render all elements more consistently and in line with modern standards. + +The [normalize.scss fork](https://github.com/guerrero/normalize.scss) of [normalize.css](http://necolas.github.io/normalize.css) was archived in 2014, and has not been updated since v0.1.0. + +[View the normalize.css test file](http://necolas.github.io/normalize.css/latest/test.html) diff --git a/builder/vendor/just-the-docs/_sass/vendor/normalize.scss/normalize.scss b/builder/vendor/just-the-docs/_sass/vendor/normalize.scss/normalize.scss new file mode 100644 index 00000000..012df795 --- /dev/null +++ b/builder/vendor/just-the-docs/_sass/vendor/normalize.scss/normalize.scss @@ -0,0 +1,351 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/builder/assets/js/just-the-docs.js b/builder/vendor/just-the-docs/assets/js/just-the-docs.js similarity index 100% rename from builder/assets/js/just-the-docs.js rename to builder/vendor/just-the-docs/assets/js/just-the-docs.js diff --git a/builder/assets/js/vendor/lunr.min.js b/builder/vendor/just-the-docs/assets/js/vendor/lunr.min.js similarity index 100% rename from builder/assets/js/vendor/lunr.min.js rename to builder/vendor/just-the-docs/assets/js/vendor/lunr.min.js diff --git a/builder/write.mjs b/builder/write.mjs index 9cd6ed90..2c5c2f6d 100644 --- a/builder/write.mjs +++ b/builder/write.mjs @@ -1,12 +1,15 @@ -// Phase 5 WRITE ONLINE: materialise the in-memory page set, the prebuilt -// theme assets, and the static-file inventory onto disk under the +// Phase 5 WRITE ONLINE: materialise the in-memory page set, the vendored +// just-the-docs JS, and the static-file inventory onto disk under the // configured destination root. See builder/PLAN-5.md for the full spec. // // One entry point: writePhase(pages, staticFiles, { destRoot, dryRun }). // Three write surfaces in parallel after a clean-then-write prepare: // // * writePages -- page.destPath ← page.html (book.html skipped). -// * copyTheme -- builder/assets/ → /assets/. +// * copyTheme -- builder/vendor/just-the-docs/assets/ → /assets/. +// Project-owned theme assets (head-nav.css, print.css, +// theme-switch.js) live under docs/assets/ and ride +// the static-file copy path instead. // * copyStaticFiles -- each staticFile.srcPath → /. // // No URL rewriting, no auxiliaries (sitemap / robots / search index), @@ -18,7 +21,10 @@ import { fileURLToPath } from "node:url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const BUILDER_ASSETS = path.join(__dirname, "assets"); +// Vendored just-the-docs runtime JS (just-the-docs.js + vendor/lunr.min.js). +// Everything else the site serves under /assets/ now comes from docs/assets/ +// (handled by the static-file copy in copyStaticFiles). +const BUILDER_ASSETS = path.join(__dirname, "vendor", "just-the-docs", "assets"); const PROJECT_ROOT = path.resolve(__dirname, ".."); const LIMIT = 64; @@ -53,12 +59,16 @@ export async function writePhase(pages, staticFiles, { destRoot, dryRun = false, }; } + // Pages, theme assets, and static files run in parallel. + // Generated assets run after copyTheme as a defensive sequence: should a + // generated asset ever land at the same rel as a vendored file, the + // generated content wins. No such collision exists today. const [pagesStats, themeStats, staticStats] = await Promise.all([ writePages(pages, destRoot, LIMIT), copyTheme(BUILDER_ASSETS, destRoot, LIMIT, baseurl), - copyStaticFiles(staticFiles, destRoot, LIMIT), - writeGeneratedAssets(generatedAssets, destRoot, LIMIT), + copyStaticFiles(staticFiles, destRoot, LIMIT, baseurl), ]); + await writeGeneratedAssets(generatedAssets, destRoot, LIMIT, baseurl); return { pages: pagesStats, @@ -69,15 +79,18 @@ export async function writePhase(pages, staticFiles, { destRoot, dryRun = false, // ---------- Generated assets (Phase 11 B2) ------------------------------ -// Build-time-generated files (currently just `tb-highlight.css` from -// highlight-theme.mjs) written under /. Run alongside the -// static / theme / pages writes so they land before the offline + -// PDF passes go looking for them. -async function writeGeneratedAssets(assets, destRoot, limit) { +// Build-time-generated files (`tb-highlight.css` from highlight-theme.mjs +// and `just-the-docs-combined.css` from scss.mjs) written under /. +// Generated CSS goes through the same baseurl rewrite the theme-asset copy +// applies, so `url("/favicon.png")` (from the SCSS `$logo` setting) resolves +// correctly on sub-path deployments. +async function writeGeneratedAssets(assets, destRoot, limit, baseurl) { + const cssTransform = baseurl ? cssBaseurlTransformer(baseurl) : null; await runLimited(assets, limit, async ({ rel, content }) => { + const out = cssTransform && rel.endsWith(".css") ? cssTransform(content) : content; const dest = path.join(destRoot, rel); await mkdirRec(path.dirname(dest)); - await safeWrite(dest, () => fs.writeFile(dest, content, "utf8")); + await safeWrite(dest, () => fs.writeFile(dest, out, "utf8")); }); } @@ -123,10 +136,9 @@ async function writePages(pages, destRoot, limit) { async function copyTheme(builderAssetsRoot, destRoot, limit, baseurl) { const destAssets = path.join(destRoot, "assets"); - // README.md is meta-documentation for the builder itself (see - // builder/assets/README.md -- the re-extraction procedure + CSS - // class contract); it's not a deployable asset. Skip it so it - // doesn't show up at /assets/README.md. + // README.md and other meta-docs in the vendor tree are not deployable + // assets; the name filter keeps them out of /assets/ should one + // ever appear under builder/vendor/just-the-docs/assets/. return copyTree( builderAssetsRoot, destAssets, @@ -156,12 +168,18 @@ function cssBaseurlTransformer(baseurl) { // ---------- §5.4 copyStaticFiles ---------------------------------------- -async function copyStaticFiles(staticFiles, destRoot, limit) { +async function copyStaticFiles(staticFiles, destRoot, limit, baseurl) { + const cssTransform = baseurl ? cssBaseurlTransformer(baseurl) : null; let copied = 0; await runLimited(staticFiles, limit, async (file) => { const dest = path.join(destRoot, file.destRel); await mkdirRec(path.dirname(dest)); - await safeWrite(dest, () => fs.copyFile(file.srcPath, dest)); + if (cssTransform && file.destRel.endsWith(".css")) { + const raw = await fs.readFile(file.srcPath, "utf8"); + await safeWrite(dest, () => fs.writeFile(dest, cssTransform(raw), "utf8")); + } else { + await safeWrite(dest, () => fs.copyFile(file.srcPath, dest)); + } copied++; }); return { copied }; diff --git a/docs/check.bat b/check.bat similarity index 97% rename from docs/check.bat rename to check.bat index e0738c86..b7a2a8ba 100644 --- a/docs/check.bat +++ b/check.bat @@ -1,4 +1,4 @@ -@pushd "%~dp0..\" +@pushd "%~dp0" node scripts/check_links.mjs --offline --include-fragments ^ --check-html --check-a11y --check-ids ^ --check-sitemap --check-search --check-canonical ^ diff --git a/docs/.gitignore b/docs/.gitignore index fe9187b2..e398f312 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,6 +1,7 @@ _site/ _site-offline/ _site-pdf/ +_serve/ _pdf/ *.af~lock~ _bak diff --git a/docs/Documentation/Book-Configuration.md b/docs/Documentation/Book-Configuration.md index 13c93ef8..decf9077 100644 --- a/docs/Documentation/Book-Configuration.md +++ b/docs/Documentation/Book-Configuration.md @@ -9,16 +9,16 @@ permalink: /Documentation/Development/Book-Configuration # Book Configuration {: .no_toc } -`docs/_data/book.yml` defines the chapter manifest for the PDF book: which pages appear, in what order, and how they map to named parts and chapters. `book.mjs` reads this file during Phase 2 (to resolve page selectors) and Phase 8 (to assemble `book.html`). See [Pipeline Stages](Pipeline-Stages) for the relevant interface contracts. +`docs/_book.yml` defines the chapter manifest for the PDF book: which pages appear, in what order, and how they map to named parts and chapters. `book.mjs` reads this file during Phase 2 (to resolve page selectors) and Phase 8 (to assemble `book.html`). See [Pipeline Stages](Pipeline-Stages) for the relevant interface contracts. * TOC goes here {:toc} ## File location and load order -**File:** `docs/_data/book.yml` +**File:** `docs/_book.yml` -`data.mjs` loads all `_data/*.yml` files during Phase 2 and makes them available as `site.data`. The orchestrator then exposes `site.data.book` as `site.bookData` and passes it to `resolveBookChapters`. That call traverses the entire structure and resolves every selector to a concrete `Page[]` stored as `entry._chapters`, so Phase 8's `assembleBook` has no further page lookups to do. +`data.mjs` loads `_book.yml` during Phase 2 and makes it available as `site.data.book`. The orchestrator then exposes `site.data.book` as `site.bookData` and passes it to `resolveBookChapters`. That call traverses the entire structure and resolves every selector to a concrete `Page[]` stored as `entry._chapters`, so Phase 8's `assembleBook` has no further page lookups to do. Run `build.bat` then `book.bat` to see the effect of changes. The `check.bat` integrity check also runs a PDF build pass. diff --git a/docs/Documentation/Builder.md b/docs/Documentation/Builder.md index 39775046..ad46c598 100644 --- a/docs/Documentation/Builder.md +++ b/docs/Documentation/Builder.md @@ -22,7 +22,7 @@ Module-level documentation lives next to the code: Sub-pages: - [Pipeline Stages](Pipeline-Stages) --- complete interface reference: function signatures, per-stage reads/writes, and every exported symbol. -- [Book Configuration](Book-Configuration) --- `_data/book.yml` key reference for the PDF chapter manifest. +- [Book Configuration](Book-Configuration) --- `_book.yml` key reference for the PDF chapter manifest. - [Extending the Builder](Extending) --- tutorial for adding a new pipeline stage or a markdown-it plugin. * TOC goes here @@ -45,8 +45,9 @@ One entry point, ~17 production modules. The content model is fixed (markdown + | [`seo.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/seo.mjs) | Phase 2 SEO precompute: per-page title / canonical / og: tags. | | [`book.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/book.mjs) | Phase 2 book chapter resolution + Phase 8 book.html assembly. | | [`build-info.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/build-info.mjs) | Phase 2 git commit hash + commit date capture. | -| [`data.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/data.mjs) | Phase 2 generic `_data/*.yml` loader. | +| [`data.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/data.mjs) | Phase 2 `_book.yml` loader. | | [`mermaid.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/mermaid.mjs) | Phase 11 (B1) preprocess: `.mmd` → `.svg` regeneration. | +| [`scss.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/scss.mjs) | Phase 11 (B3) preprocess: compiles `docs/assets/css/just-the-docs-combined.scss` via Dart Sass into the just-the-docs stylesheet. | | [`render.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/render.mjs) | Phase 3 markdown-it pipeline: GFM admonitions, kramdown-style attributes, deflist, footnotes, header IDs, TOC, relative-link rewriting. | | [`highlight.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/highlight.mjs) | Phase 3 Shiki bootstrap plus the twinBASIC grammar. Emits the just-the-docs wrapper structure. | | [`highlight-theme.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/highlight-theme.mjs) | Phase 11 (B2) theme loader: reads `themes/*.theme`, derives the palette, emits `tb-highlight.css` and the scope-to-class lookup. | @@ -60,14 +61,14 @@ One entry point, ~17 production modules. The content model is fixed (markdown + | [`offline.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/offline.mjs) | Phase 7 offline tree: URL rewriting, JS patching for `file://` browsing. | | [`pdf.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/pdf.mjs) | Phase 8 sparse PDF source tree. | -`builder/` lives at the repo root (not under `docs/`) so it is not part of the Jekyll source tree the legacy renderer reads. It writes to `docs/_site/`, `docs/_site-offline/`, and `docs/_site-pdf/` --- the same destinations Jekyll used, so deployment tooling stays unchanged. +`builder/` lives at the repo root (not under `docs/`) so it is not part of the Jekyll source tree the legacy renderer reads. The `build.bat` path writes to `docs/_site/`, `docs/_site-offline/`, and `docs/_site-pdf/` --- the same destinations Jekyll used, so deployment tooling stays unchanged. The `serve.bat` path writes to a separate `docs/_serve/` tree so a one-off `build.bat` run (refreshing the PDF, for example) never clobbers a running serve session's output. ## Build phases | Phase | Module(s) | Job | Time | |---|---|---|---| | 1 | `discover.mjs` | Read `.md` / `.html` with frontmatter; enumerate static files | ~120 ms | -| 2 | `nav.mjs` / `seo.mjs` / `book.mjs` / `build-info.mjs` / `data.mjs` | Compute nav tree, SEO, book chapters, git commit info, `_data/*.yml` | ~60 ms | +| 2 | `nav.mjs` / `seo.mjs` / `book.mjs` / `build-info.mjs` / `data.mjs` | Compute nav tree, SEO, book chapters, git commit info, `_book.yml` | ~60 ms | | 3 | `render.mjs` + `highlight.mjs` | Markdown → HTML body | ~1-2 s | | 4 | `template.mjs` + `compress.mjs` | Wrap in layout, anchor headings, compress whitespace | ~200 ms | | 5 | `write.mjs` | Write `_site/` | ~400 ms | @@ -75,7 +76,7 @@ One entry point, ~17 production modules. The content model is fixed (markdown + | 7 | `offline.mjs` | URL-rewritten copy to `_site-offline/` | ~1,000 ms | | 8 | `pdf.mjs` + `book.mjs` | Sparse `_site-pdf/` tree (book.html + CSS + images) | ~150 ms | -Phases 9, 10, and 11 are historical: Phase 9 was a no-output QoL pass, Phase 10 retired Jekyll, Phase 11 introduces the output-changing parity updates. None adds a runtime step. Phase 12 adds the `--serve` dev-server mode (a separate lifecycle, not a build phase). The per-phase `PLAN-N.md` files retain the implementation history. +Phases 9, 10, and 11 are historical: Phase 9 was a no-output QoL pass, Phase 10 retired Jekyll, Phase 11 introduces the output-changing parity updates. None adds a runtime step. Phase 12 adds the `--serve` dev-server mode (a separate lifecycle, not a build phase; writes to `docs/_serve/` and skips the offline + PDF passes by default so the rebuild loop stays under one second). The per-phase `PLAN-N.md` files retain the implementation history. ## Dependencies @@ -98,6 +99,7 @@ A single `package.json` at the repo root carries everything --- the static site "mermaid": "11.15.0", "pdf-lib": "1.17.1", "puppeteer": "25.0.4", + "sass": "^1.0", "shiki": "^1.0" }, "scripts": { @@ -106,7 +108,7 @@ A single `package.json` at the repo root carries everything --- the static site } ``` -No template engine, no framework, no bundler. `acorn` + `acorn-walk` parse the upstream `just-the-docs.js` so the offline patcher can target the AST instead of regex-matching strings; `markdown-it-{attrs,deflist,footnote}` cover the kramdown extensions the legacy renderer supported; `shiki` does the syntax highlighting; `lunr` powers the search index. `mermaid` and `puppeteer` together drive the `.mmd` → `.svg` pre-phase (one headless Chromium per batch, replacing the old per-diagram `npx mmdc` fork); `puppeteer` is shared with the PDF renderer (`docs/render-book.mjs`). `pdf-lib` + `html-entities` + `htmlparser2` are the PDF renderer's own toolchain. The `postinstall` runs `builder/scripts/patch-dagre.mjs`, which rewrites mermaid's bundled dagre adapter --- see [Mermaid Dagre Patches](Fixes/Dagre). +No template engine, no framework, no bundler. `acorn` + `acorn-walk` parse the upstream `just-the-docs.js` so the offline patcher can target the AST instead of regex-matching strings; `markdown-it-{attrs,deflist,footnote}` cover the kramdown extensions the legacy renderer supported; `shiki` does the syntax highlighting; `lunr` powers the search index. `mermaid` and `puppeteer` together drive the `.mmd` → `.svg` pre-phase (one headless Chromium per batch, replacing the old per-diagram `npx mmdc` fork); `puppeteer` is shared with the PDF renderer (`book/render-book.mjs`). `sass` (Dart Sass) compiles the vendored just-the-docs SCSS plus our customizations into the site stylesheet on every build, replacing the Jekyll-Sass pre-compile step. `pdf-lib` + `html-entities` + `htmlparser2` are the PDF renderer's own toolchain. The `postinstall` runs `builder/scripts/patch-dagre.mjs`, which rewrites mermaid's bundled dagre adapter --- see [Mermaid Dagre Patches](Fixes/Dagre). `mermaid` is **exact-pinned** (`"11.15.0"`, not `"^11.15.0"`). The dagre patches target a chunk filename whose hash component (`dagre-ZXKKJJHT.mjs`) is regenerated on each mermaid release, so a floated range could break the postinstall on a transparent patch bump. @@ -116,19 +118,19 @@ Each subsection covers the design rationale and implementation details for one m ### [tbdocs.mjs](https://github.com/twinbasic/documentation/blob/main/builder/tbdocs.mjs) --- entry point and orchestrator -`captureBuildInfo()` is launched as a promise immediately after discover so the two `git` shell-outs overlap with the CPU-bound nav computation that follows; the result is `await`ed only once Phase 2's other substeps are done. The shared markdown-it instance is built once via `initHighlighter` + `createMarkdownIt` and stored on `site.markdown` so Phase 2's SEO precompute and Phase 3's body renderer use the same configured pipeline --- titles run through the same dash, quote, and footnote-stripping rules as page body text. +`_config.yml` is loaded first so its `exclude:` list can be passed to `discover()`. `captureBuildInfo()` is launched as a promise immediately after the config load so the two `git` shell-outs overlap with the I/O-bound discover and the CPU-bound nav computation that follows; the result is `await`ed only once Phase 2's other substeps are done. The shared markdown-it instance is built once via `initHighlighter` + `createMarkdownIt` and stored on `site.markdown` so Phase 2's SEO precompute and Phase 3's body renderer use the same configured pipeline --- titles run through the same dash, quote, and footnote-stripping rules as page body text. The drift guard at the end (`if (pages.length < 836)`) sets `process.exitCode = 1` when discover loses pages --- a discovery-rule regression that silently drops content appears as a non-zero exit even though the build itself "succeeded". ### [serve.mjs](https://github.com/twinbasic/documentation/blob/main/builder/serve.mjs) --- Phase 12 dev server -The 300 ms debounce coalesces rapid file changes into a single rebuild. A lightweight inject middleware splices the SSE client script before `` at serve time so the on-disk `_site/` stays byte-identical to a non-`--serve` build. +The 300 ms debounce coalesces rapid file changes into a single rebuild. A lightweight inject middleware splices the SSE client script before `` at HTTP-response time so the on-disk `_serve/` stays byte-identical to what `runBuild --dest docs/_serve` would have produced outside of serve mode. -`shouldRebuild` filters watcher events along three axes: prefixes (`_site/`, `_site-offline/`, `_site-pdf/`, `_pdf/`, `node_modules/`, `.git/`), basename patterns (dotfiles, editor swap files, the `4913` sentinel vim writes), and the specific `assets/images/mmd/*.svg` path. The last bit deserves a callout: those SVGs are emitted by the mermaid pre-phase back under `srcRoot`, so without the filter every `.mmd` edit fires the watcher twice (once on the `.mmd` save, once on the `.svg` write mid-rebuild) and the queued second rebuild is a no-op that triggers a redundant browser reload ~3 s later. The filter treats the `.mmd` as the source of truth and the `.svg` as a build artifact, matching how `_site/` writes are already excluded. +`shouldRebuild` filters watcher events along three axes: prefixes (`_site/`, `_site-offline/`, `_site-pdf/`, `_serve/`, `_pdf/`, `node_modules/`, `.git/`), basename patterns (dotfiles, editor swap files, the `4913` sentinel vim writes), and the specific `assets/images/mmd/*.svg` path. The last bit deserves a callout: those SVGs are emitted by the mermaid pre-phase back under `srcRoot`, so without the filter every `.mmd` edit fires the watcher twice (once on the `.mmd` save, once on the `.svg` write mid-rebuild) and the queued second rebuild is a no-op that triggers a redundant browser reload ~3 s later. The filter treats the `.mmd` as the source of truth and the `.svg` as a build artifact, matching how `_site/` writes are already excluded. ### [discover.mjs](https://github.com/twinbasic/documentation/blob/main/builder/discover.mjs) --- Phase 1 -The IGNORE rules skip every underscored directory (catches `_site/`, `_site-offline/`, `_site-pdf/`, `_data/`, every `_Images/` at any depth), the prebuilt theme trees under `assets/css/` and `assets/js/` (sourced from `builder/assets/` instead), top-level toolchain files (`Gemfile`, `_config.yml`, `*.bat`), and the obvious cache dirs. +The `exclude:` list from `_config.yml` is passed in as the `ignore` parameter and forwarded directly to `fast-glob`. It skips every underscore-prefixed file and directory (`_config.yml`, `_book.yml`, `_site/`, `_site-offline/`, `_site-pdf/`, every `_Images/` at any depth), SCSS sources (`**/*.scss`, compiled separately by [`scss.mjs`](https://github.com/twinbasic/documentation/blob/main/builder/scss.mjs)), Mermaid sources (`**/*.mmd`, the `.svg` siblings are kept), and the obvious cache dirs. The final `pages.sort(byName)` mirrors Jekyll's `site.pages.sort_by!(&:name)` --- sort by basename, leaving fast-glob's input order to break ties (which `nav_order` then resolves deterministically in Phase 2). @@ -162,7 +164,7 @@ The largest module by line count (~990 lines), split into two clearly-labelled h 4. shift heading levels by `n in [0, 3]` capped at `h7-stub`; 5. prefix every heading id and intra-chapter `href="#"` with the chapter anchor. -Each part and chapter divider page contains the entry's title as an H1/H2 heading (or a silent `

` when `no_outline_entry:` is set), which becomes the PDF bookmark target. When `landing_is_target:` is set on an entry, the heading is instead injected directly into the landing-page article so the PDF bookmark navigates there rather than to the blank divider page; `rewriteBookHrefs`'s landing-H1 strip skips the injected heading via a `data-divider-heading` attribute. `outline_closed:` stamps `data-pdf-bookmark-closed` on the heading (or on the first content article for `no_outline_entry` entries), and `parseOutline` in `docs/lib/outline.mjs` reads the attribute to write a negative PDF `/Count` for that bookmark node. Full schema is documented in the `_data/book.yml` file header. +Each part and chapter divider page contains the entry's title as an H1/H2 heading (or a silent `

` when `no_outline_entry:` is set), which becomes the PDF bookmark target. When `landing_is_target:` is set on an entry, the heading is instead injected directly into the landing-page article so the PDF bookmark navigates there rather than to the blank divider page; `rewriteBookHrefs`'s landing-H1 strip skips the injected heading via a `data-divider-heading` attribute. `outline_closed:` stamps `data-pdf-bookmark-closed` on the heading (or on the first content article for `no_outline_entry` entries), and `parseOutline` in `book/lib/outline.mjs` reads the attribute to write a negative PDF `/Count` for that bookmark node. Full schema is documented in the `_data/book.yml` file header. `augmentWithRedirectStubs` synthesises virtual `Page` records from each real page's `redirect_from` so the cross-ref rewriter still captures legacy URLs the way Jekyll's `jekyll-redirect-from` did (its stubs appeared in `site.pages` and got swept into the lookup table). `chapterAnchorFromUrl` is the URL → `ch-…` slug helper that generates both `id="..."` and the `#…` href targets. @@ -187,6 +189,21 @@ The render runs in a single `page.evaluate` that dynamic-imports `mermaid.esm.mj - **Setup** (`puppeteer` import fails, mermaid not installed, `puppeteer.launch()` fails for lack of Chrome): warns once with the recovery command (`npm install` / `npx puppeteer browsers install chrome --install-deps`), retains every on-disk SVG, returns `{ ..., setupSkipped: true }`. The orchestrator does **not** flip the exit code --- a fresh checkout still builds, just without diagram updates. - **Per-diagram render** (broken `.mmd` syntax, mermaid render throws inside `page.evaluate`): warns with the parser error including line + column + expected-token list, retains that diagram's previous SVG, **continues** processing the rest of the batch so every broken diagram surfaces in one run, and increments the returned `failed` count. The orchestrator flips `process.exitCode = 1` based on that count so CI catches the bad diagram. +### [scss.mjs](https://github.com/twinbasic/documentation/blob/main/builder/scss.mjs) --- Phase 11 (B3) SCSS compiler + +Runs Dart Sass (the [`sass`](https://www.npmjs.com/package/sass) npm package) over `docs/assets/css/just-the-docs-combined.scss` and pushes the result onto `generatedAssets` as `assets/css/just-the-docs-combined.css`. Replaces the Jekyll-era pre-compiled CSS that used to live under `builder/assets/`; editing any SCSS partial now reflects on the next build instead of requiring a re-extraction. + +Load paths are stacked, searched in order: `docs/_sass/` first (our customizations under `custom/`), then `builder/vendor/just-the-docs/_sass/` (the gem at v0.10.1). The same shadowing Jekyll relied on still applies --- `@import "custom/custom"` resolves to our `docs/_sass/custom/custom.scss` because the load-path order puts our `_sass/` first. + +The entry point replicates the gem's `_includes/css/just-the-docs.scss.liquid` Liquid template as pure SCSS: it imports `support/support`, then `custom/setup`, then `color_schemes/light` (always), then `modules` --- emitting the full light-theme rule set at root. The same import block re-runs inside an `html.dark-mode { ... }` wrapper with `color_schemes/dark` instead so every module rule lands a second time with the dark palette, scoped under the dark-mode class. + +Failure modes: + +- **Setup** (`sass` not installed) is a hard error with a `npm install` hint --- there is no pre-compiled CSS fallback to fall back to. +- **Content** (syntax error in any SCSS partial) prints the source location, flips `process.exitCode = 1`, and continues the build with the previous `_site/` CSS lingering if any. CI catches the non-zero exit. + +Upstream Dart Sass emits deprecation warnings against several gem-vendored constructs (`darken()`, root-`@import`); they're upstream noise, not actionable here without forking the gem. + ### [render.mjs](https://github.com/twinbasic/documentation/blob/main/builder/render.mjs) --- Phase 3 markdown pipeline The largest single module (~1,580 lines) and the runtime hot path --- this is what dominates the ~1--2 s build time. @@ -262,7 +279,7 @@ The per-page sidebar nav block is byte-identical across every page (it doesn't d The just-the-docs.js patcher is AST-based as of Phase 11 (B11): `deriveOfflineJtdJs` parses the upstream source with `acorn`, scans for `FunctionDeclaration` nodes named `navLink` and `initSearch`, and slices in the two replacement implementations (`JTD_NAVLINK_REPLACEMENT`, `JTD_INITSEARCH_FN_REPLACEMENT`). The non-patched regions stay byte-identical to the upstream source, and cosmetic upstream edits (variable renames, whitespace inside the patched bodies) survive --- the prior anchored-regex patcher would have broken on either. A parse error at build time is a clear signal that re-extraction produced something acorn can't read; no defensive fallback ships because just-the-docs.js is only re-extracted on deliberate gem-bump operations. -`deriveOfflineSearchDataJs` wraps `search-data.json` as `window.SEARCH_DATA = {...}` (a `