From 70b34f01f7355fc0850333ac08668a70c3faae2d Mon Sep 17 00:00:00 2001
From: Peter Mosses <18308236+pdmosses@users.noreply.github.com>
Date: Mon, 4 Jul 2022 21:15:10 +0200
Subject: [PATCH] Combination (#578)

This PR combines (and resolves conflicts between) #448, #463, #466, #494, #495, #496, #498, and #572.

The main aim is to facilitate use of several of the implemented features _together_, when using the fork as a remote theme. It should also simplify merging the included PRs into a future release.

The branch [combination-rec-nav](https://github.com/pdmosses/just-the-docs/tree/combination-rec-nav) adds [multi-level navigation](https://github.com/pmarsceill/just-the-docs/pull/462) and (NEW:) [sibling links](https://github.com/pmarsceill/just-the-docs/pull/394) to the branch used for this PR. It includes updated [documentation for the navigation structure](https://pdmosses.github.io/just-the-docs/docs/navigation-structure/), and reorganised and extended [navigation tests](https://pdmosses.github.io/just-the-docs/tests/navigation/). The documentation and the tests can be browsed at the (temporary) [website published from the combination-rec-nav branch](https://pdmosses.github.io/just-the-docs/).

_Caveat:_ The changes to v0.3.3 in this PR and #462 have not yet been reviewed or approved, and may need updating before merging into a release of the theme. If you use a branch from a PR as a remote theme, there is a risk of such updates affecting your website. Moreover, these branches are likely to be deleted after they have been merged. To avoid  such problems, you could copy the branch that you want to use to your own fork of the theme.

Co-authored-by: Matt Wang <matt@matthewwang.me>
---
 404.html                                      |   2 +-
 _config.yml                                   |  10 +-
 _includes/css/callouts.scss.liquid            |  93 ++++++++
 _includes/css/just-the-docs.scss.liquid       |   3 +-
 _includes/nav.html                            |  34 ++-
 _layouts/default.html                         |  52 +++--
 _sass/code.scss                               | 207 -----------------
 _sass/color_schemes/dark.scss                 |  17 +-
 _sass/color_schemes/light.scss                | 208 ++++++++++++++++++
 _sass/content.scss                            |   2 +-
 _sass/custom/custom.scss                      |   4 +
 _sass/navigation.scss                         |  22 +-
 _sass/typography.scss                         |   2 -
 _sass/vendor/OneDarkJekyll/LICENSE            |  21 ++
 _sass/vendor/OneDarkJekyll/README.md          |  25 +++
 _sass/vendor/OneDarkJekyll/colors.less        |  30 +++
 .../OneDarkJekyll/syntax-firewatch-green.scss |  65 ++++++
 .../OneDarkJekyll/syntax-firewatch.scss       |  65 ++++++
 .../OneDarkJekyll/syntax-one-dark-vivid.scss  |  64 ++++++
 .../vendor/OneDarkJekyll/syntax-one-dark.scss |  64 ++++++
 .../OneDarkJekyll/syntax-variables.less       |  56 +++++
 _sass/vendor/OneDarkJekyll/syntax.less        |  93 ++++++++
 assets/js/just-the-docs.js                    |  17 +-
 assets/js/zzzz-search-data.json               |   6 +-
 docs/configuration.md                         |  84 ++++++-
 docs/index-test.md                            |  51 +++++
 docs/navigation-structure.md                  |  13 +-
 docs/tests/index.md                           |  22 --
 docs/tests/navigation/disambiguation/a.md     |  14 --
 docs/tests/navigation/disambiguation/b.md     |  14 --
 docs/tests/navigation/disambiguation/ca.md    |  16 --
 docs/tests/navigation/disambiguation/cb.md    |  16 --
 docs/tests/navigation/disambiguation/dca.md   |  16 --
 docs/tests/navigation/disambiguation/dcb.md   |  16 --
 docs/tests/navigation/disambiguation/index.md |  14 --
 docs/tests/navigation/exclusion/0.md          |  13 --
 docs/tests/navigation/exclusion/00.md         |  15 --
 docs/tests/navigation/exclusion/000.md        |  17 --
 docs/tests/navigation/exclusion/001.md        |  17 --
 docs/tests/navigation/exclusion/01.md         |  15 --
 docs/tests/navigation/exclusion/010.md        |  17 --
 docs/tests/navigation/exclusion/011.md        |  17 --
 docs/tests/navigation/exclusion/1.md          |  13 --
 docs/tests/navigation/exclusion/10.md         |  15 --
 docs/tests/navigation/exclusion/100.md        |  17 --
 docs/tests/navigation/exclusion/101.md        |  17 --
 docs/tests/navigation/exclusion/11.md         |  15 --
 docs/tests/navigation/exclusion/110.md        |  17 --
 docs/tests/navigation/exclusion/111.md        |  17 --
 docs/tests/navigation/exclusion/excluded.md   |  11 -
 docs/tests/navigation/exclusion/index.md      |  36 ---
 docs/tests/navigation/exclusion/untitled.md   |   6 -
 docs/tests/navigation/index.md                |   8 -
 docs/tests/navigation/order/default/10.md     |  14 --
 docs/tests/navigation/order/default/2.md      |  14 --
 docs/tests/navigation/order/default/a.md      |  14 --
 .../navigation/order/default/aa-lower.md      |  14 --
 docs/tests/navigation/order/default/aa.md     |  14 --
 docs/tests/navigation/order/default/index.md  |  15 --
 docs/tests/navigation/order/floats/-1.1.md    |  16 --
 docs/tests/navigation/order/floats/0.0.md     |  16 --
 docs/tests/navigation/order/floats/10.0.md    |  16 --
 docs/tests/navigation/order/floats/2.2222.md  |  16 --
 docs/tests/navigation/order/floats/index.md   |  13 --
 docs/tests/navigation/order/index.md          |  16 --
 docs/tests/navigation/order/integers/-1.md    |  16 --
 docs/tests/navigation/order/integers/0.md     |  16 --
 docs/tests/navigation/order/integers/10.md    |  16 --
 docs/tests/navigation/order/integers/2.md     |  16 --
 docs/tests/navigation/order/integers/index.md |  13 --
 docs/tests/navigation/order/mixture/-1.1.md   |  16 --
 docs/tests/navigation/order/mixture/-1.md     |  16 --
 docs/tests/navigation/order/mixture/0.0.md    |  16 --
 docs/tests/navigation/order/mixture/0.md      |  16 --
 docs/tests/navigation/order/mixture/10.0.md   |  16 --
 docs/tests/navigation/order/mixture/10.md     |  14 --
 docs/tests/navigation/order/mixture/2.2222.md |  16 --
 docs/tests/navigation/order/mixture/2.md      |  14 --
 docs/tests/navigation/order/mixture/a.md      |  14 --
 .../navigation/order/mixture/aa-lower.md      |  16 --
 docs/tests/navigation/order/mixture/aa.md     |  16 --
 docs/tests/navigation/order/mixture/index.md  |  11 -
 docs/tests/navigation/order/order.md          |   7 -
 docs/tests/navigation/order/strings/10.md     |  16 --
 docs/tests/navigation/order/strings/2.md      |  16 --
 docs/tests/navigation/order/strings/a.md      |  16 --
 .../navigation/order/strings/aa-lower.md      |  16 --
 docs/tests/navigation/order/strings/aa.md     |  16 --
 docs/tests/navigation/order/strings/index.md  |  13 --
 docs/tests/styling/dl.md                      |  83 -------
 docs/tests/styling/index.md                   |   8 -
 docs/tests/styling/ol.md                      |  65 ------
 docs/tests/styling/ul.md                      |  65 ------
 docs/ui-components/callouts.md                | 104 +++++++++
 just-the-docs.gemspec                         |   4 +-
 lib/tasks/search.rake                         |   2 +-
 96 files changed, 1137 insertions(+), 1451 deletions(-)
 create mode 100644 _includes/css/callouts.scss.liquid
 create mode 100644 _sass/vendor/OneDarkJekyll/LICENSE
 create mode 100644 _sass/vendor/OneDarkJekyll/README.md
 create mode 100644 _sass/vendor/OneDarkJekyll/colors.less
 create mode 100644 _sass/vendor/OneDarkJekyll/syntax-firewatch-green.scss
 create mode 100644 _sass/vendor/OneDarkJekyll/syntax-firewatch.scss
 create mode 100644 _sass/vendor/OneDarkJekyll/syntax-one-dark-vivid.scss
 create mode 100644 _sass/vendor/OneDarkJekyll/syntax-one-dark.scss
 create mode 100644 _sass/vendor/OneDarkJekyll/syntax-variables.less
 create mode 100644 _sass/vendor/OneDarkJekyll/syntax.less
 delete mode 100644 docs/tests/index.md
 delete mode 100644 docs/tests/navigation/disambiguation/a.md
 delete mode 100644 docs/tests/navigation/disambiguation/b.md
 delete mode 100644 docs/tests/navigation/disambiguation/ca.md
 delete mode 100644 docs/tests/navigation/disambiguation/cb.md
 delete mode 100644 docs/tests/navigation/disambiguation/dca.md
 delete mode 100644 docs/tests/navigation/disambiguation/dcb.md
 delete mode 100644 docs/tests/navigation/disambiguation/index.md
 delete mode 100644 docs/tests/navigation/exclusion/0.md
 delete mode 100644 docs/tests/navigation/exclusion/00.md
 delete mode 100644 docs/tests/navigation/exclusion/000.md
 delete mode 100644 docs/tests/navigation/exclusion/001.md
 delete mode 100644 docs/tests/navigation/exclusion/01.md
 delete mode 100644 docs/tests/navigation/exclusion/010.md
 delete mode 100644 docs/tests/navigation/exclusion/011.md
 delete mode 100644 docs/tests/navigation/exclusion/1.md
 delete mode 100644 docs/tests/navigation/exclusion/10.md
 delete mode 100644 docs/tests/navigation/exclusion/100.md
 delete mode 100644 docs/tests/navigation/exclusion/101.md
 delete mode 100644 docs/tests/navigation/exclusion/11.md
 delete mode 100644 docs/tests/navigation/exclusion/110.md
 delete mode 100644 docs/tests/navigation/exclusion/111.md
 delete mode 100644 docs/tests/navigation/exclusion/excluded.md
 delete mode 100644 docs/tests/navigation/exclusion/index.md
 delete mode 100644 docs/tests/navigation/exclusion/untitled.md
 delete mode 100644 docs/tests/navigation/index.md
 delete mode 100644 docs/tests/navigation/order/default/10.md
 delete mode 100644 docs/tests/navigation/order/default/2.md
 delete mode 100644 docs/tests/navigation/order/default/a.md
 delete mode 100644 docs/tests/navigation/order/default/aa-lower.md
 delete mode 100644 docs/tests/navigation/order/default/aa.md
 delete mode 100644 docs/tests/navigation/order/default/index.md
 delete mode 100644 docs/tests/navigation/order/floats/-1.1.md
 delete mode 100644 docs/tests/navigation/order/floats/0.0.md
 delete mode 100644 docs/tests/navigation/order/floats/10.0.md
 delete mode 100644 docs/tests/navigation/order/floats/2.2222.md
 delete mode 100644 docs/tests/navigation/order/floats/index.md
 delete mode 100644 docs/tests/navigation/order/index.md
 delete mode 100644 docs/tests/navigation/order/integers/-1.md
 delete mode 100644 docs/tests/navigation/order/integers/0.md
 delete mode 100644 docs/tests/navigation/order/integers/10.md
 delete mode 100644 docs/tests/navigation/order/integers/2.md
 delete mode 100644 docs/tests/navigation/order/integers/index.md
 delete mode 100644 docs/tests/navigation/order/mixture/-1.1.md
 delete mode 100644 docs/tests/navigation/order/mixture/-1.md
 delete mode 100644 docs/tests/navigation/order/mixture/0.0.md
 delete mode 100644 docs/tests/navigation/order/mixture/0.md
 delete mode 100644 docs/tests/navigation/order/mixture/10.0.md
 delete mode 100644 docs/tests/navigation/order/mixture/10.md
 delete mode 100644 docs/tests/navigation/order/mixture/2.2222.md
 delete mode 100644 docs/tests/navigation/order/mixture/2.md
 delete mode 100644 docs/tests/navigation/order/mixture/a.md
 delete mode 100644 docs/tests/navigation/order/mixture/aa-lower.md
 delete mode 100644 docs/tests/navigation/order/mixture/aa.md
 delete mode 100644 docs/tests/navigation/order/mixture/index.md
 delete mode 100644 docs/tests/navigation/order/order.md
 delete mode 100644 docs/tests/navigation/order/strings/10.md
 delete mode 100644 docs/tests/navigation/order/strings/2.md
 delete mode 100644 docs/tests/navigation/order/strings/a.md
 delete mode 100644 docs/tests/navigation/order/strings/aa-lower.md
 delete mode 100644 docs/tests/navigation/order/strings/aa.md
 delete mode 100644 docs/tests/navigation/order/strings/index.md
 delete mode 100644 docs/tests/styling/dl.md
 delete mode 100644 docs/tests/styling/index.md
 delete mode 100644 docs/tests/styling/ol.md
 delete mode 100644 docs/tests/styling/ul.md
 create mode 100644 docs/ui-components/callouts.md

diff --git a/404.html b/404.html
index 5fde9668..a2d250a5 100644
--- a/404.html
+++ b/404.html
@@ -8,4 +8,4 @@ search_exclude: true
 
 <h1>Page not found</h1>
 
-<p>The page you requested could not be found. Try using the navigation {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to this <a href="{{ '/' | absolute_url }}">site's home page</a>.</p>
+<p>The page you requested could not be found. Try using the navigation {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to this <a href="{{ '/' | relative_url }}">site's home page</a>.</p>
diff --git a/_config.yml b/_config.yml
index dbe742f2..e5908211 100644
--- a/_config.yml
+++ b/_config.yml
@@ -19,15 +19,7 @@ baseurl: "/just-the-docs" # the subpath of your site, e.g. /blog
 url: "https://just-the-docs.github.io" # the base hostname & protocol for your site, e.g. http://example.com
 
 permalink: pretty
-exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json",  "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile"
-, "docs/tests/"
-]
-
-# Regression tests
-# By default, the pages in /docs/tests are excluded when the ste is built.
-# To include them, comment-out the relevant line above.
-# Uncommenting the following line doesn't work - see https://github.com/jekyll/jekyll/issues/4791
-# include: ["docs/tests/"]
+exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json",  "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile"]
 
 # Set a path/url to a logo that will be displayed instead of the title
 #logo: "/assets/images/just-the-docs.png"
diff --git a/_includes/css/callouts.scss.liquid b/_includes/css/callouts.scss.liquid
new file mode 100644
index 00000000..e99600e5
--- /dev/null
+++ b/_includes/css/callouts.scss.liquid
@@ -0,0 +1,93 @@
+{%- comment -%}
+  {% include css/callouts.scss.liquid color_scheme = string %}
+  produces SCSS for all the callouts in site.callouts. For the "dark"
+  color scheme, the levels of the text and background colors are reversed.
+{%- endcomment -%}
+
+{%- assign callout_background_hue = "000" -%}
+{%- assign callout_color_hue = "300" -%}
+{%- if site.callouts_level == "loud" or include.color_scheme == "dark" and site.callouts_level != "quiet" -%}
+  {%- assign callout_background_hue = "300" -%}
+  {%- assign callout_color_hue = "000" -%}
+{%- endif -%}
+
+div.opaque {
+  background-color: $body-background-color;
+}
+
+{%- for callout in site.callouts %}
+
+{%- assign callout_opacity = callout[1].opacity | default: site.callouts_opacity | default: 0.2 -%}
+
+p.{{ callout[0] }}, blockquote.{{ callout[0] }} {
+    background: rgba(${{ callout[1].color }}-{{ callout_background_hue }}, {{ callout_opacity }});
+    border-left: $border-radius solid ${{ callout[1].color }}-{{ callout_color_hue }};
+    border-radius: $border-radius;
+    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
+    padding: .8rem;
+    {% if callout[1].title %}
+    &::before {
+        color: ${{ callout[1].color }}-{{ callout_color_hue }};
+        content: "{{ callout[1].title }}";
+        display: block;
+        font-weight: bold;
+        text-transform: uppercase;
+        font-size: .75em;
+        padding-bottom: .125rem;
+    }
+    {% endif %}
+    > .{{ callout[0] }}-title {
+      color: ${{ callout[1].color }}-{{ callout_color_hue }};
+      display: block;
+      font-weight: bold;
+      text-transform: uppercase;
+      font-size: .75em;
+      padding-bottom: .125rem;
+    }
+}
+
+p.{{ callout[0] }}-title, blockquote.{{ callout[0] }}-title {
+    background: rgba(${{ callout[1].color }}-{{ callout_background_hue }}, {{ callout_opacity }});
+    border-left: $border-radius solid ${{ callout[1].color }}-{{ callout_color_hue }};
+    border-radius: $border-radius;
+    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);
+    padding: .8rem;
+    > p:first-child {
+      margin-top: 0;
+      margin-bottom: 0;
+      color: ${{ callout[1].color }}-{{ callout_color_hue }};
+      display: block;
+      font-weight: bold;
+      text-transform: uppercase;
+      font-size: .75em;
+      padding-bottom: .125rem;
+    }
+}
+
+blockquote.{{ callout[0] }} {
+  margin-left: 0;
+  margin-right: 0;
+  
+  > p:first-child {
+    margin-top: 0;
+  }
+    
+  > p:last-child {
+    margin-bottom: 0;
+  }
+}
+
+blockquote.{{ callout[0] }}-title {
+  margin-left: 0;
+  margin-right: 0;
+  
+  > p:nth-child(2) {
+    margin-top: 0;
+  }
+    
+  > p:last-child {
+    margin-bottom: 0;
+  }
+}
+
+{% endfor -%}
diff --git a/_includes/css/just-the-docs.scss.liquid b/_includes/css/just-the-docs.scss.liquid
index 495cd6dd..29d56902 100644
--- a/_includes/css/just-the-docs.scss.liquid
+++ b/_includes/css/just-the-docs.scss.liquid
@@ -1,7 +1,8 @@
 {% if site.logo %}
-$logo: "{{ site.logo | absolute_url }}";
+$logo: "{{ site.logo | relative_url }}";
 {% endif %}
 @import "./support/support";
 @import "./color_schemes/{{ include.color_scheme }}";
 @import "./modules";
 {% include css/custom.scss.liquid %}
+{% include css/callouts.scss.liquid color_scheme = include.color_scheme %}
diff --git a/_includes/nav.html b/_includes/nav.html
index 325a68c8..accfd891 100644
--- a/_includes/nav.html
+++ b/_includes/nav.html
@@ -60,11 +60,11 @@
   {%- for node in pages_list -%}
     {%- if node.parent == nil -%}
       {%- unless node.nav_exclude -%}
-      <li class="nav-list-item{% if page.url == node.url or page.parent == node.title or page.grand_parent == node.title %} active{% endif %}">
+      <li class="nav-list-item{% if page.collection == include.key and page.url == node.url or page.parent == node.title or page.grand_parent == node.title %} active{% endif %}">
         {%- if node.has_children -%}
           <a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a>
         {%- endif -%}
-        <a href="{{ node.url | absolute_url }}" class="nav-list-link{% if page.url == node.url %} active{% endif %}">{{ node.title }}</a>
+        <a href="{{ node.url | relative_url }}" class="nav-list-link{% if page.url == node.url %} active{% endif %}">{{ node.title }}</a>
         {%- if node.has_children -%}
           {%- assign children_list = pages_list | where: "parent", node.title -%}
           <ul class="nav-list ">
@@ -74,14 +74,14 @@
               {%- if child.has_children -%}
                 <a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a>
               {%- endif -%}
-              <a href="{{ child.url | absolute_url }}" class="nav-list-link{% if page.url == child.url %} active{% endif %}">{{ child.title }}</a>
+              <a href="{{ child.url | relative_url }}" class="nav-list-link{% if page.url == child.url %} active{% endif %}">{{ child.title }}</a>
               {%- if child.has_children -%}
                 {%- assign grand_children_list = pages_list | where: "parent", child.title | where: "grand_parent", node.title -%}
                 <ul class="nav-list">
                 {%- for grand_child in grand_children_list -%}
                   {%- unless grand_child.nav_exclude -%}
                   <li class="nav-list-item {% if page.url == grand_child.url %} active{% endif %}">
-                    <a href="{{ grand_child.url | absolute_url }}" class="nav-list-link{% if page.url == grand_child.url %} active{% endif %}">{{ grand_child.title }}</a>
+                    <a href="{{ grand_child.url | relative_url }}" class="nav-list-link{% if page.url == grand_child.url %} active{% endif %}">{{ grand_child.title }}</a>
                   </li>
                   {%- endunless -%}
                 {%- endfor -%}
@@ -97,3 +97,29 @@
     {%- endif -%}
   {%- endfor -%}
 </ul>
+
+{%- if page.collection == include.key -%}
+
+  {%- for node in pages_list -%}
+    {%- if node.parent == nil -%}
+      {%- if page.parent == node.title or page.grand_parent == node.title -%}
+        {%- assign first_level_url = node.url | relative_url -%}
+      {%- endif -%}
+      {%- if node.has_children -%}
+        {%- assign children_list = pages_list | where: "parent", node.title -%}
+        {%- for child in children_list -%}
+          {%- if child.has_children -%}
+            {%- if page.url == child.url or page.parent == child.title and page.grand_parent == child.parent -%}
+              {%- assign second_level_url = child.url | relative_url -%}
+            {%- endif -%}
+          {%- endif -%}
+        {%- endfor -%}
+      {%- endif -%}
+    {%- endif -%}
+  {%- endfor -%}
+
+  {% if page.has_children == true and page.has_toc != false %}
+    {%- assign toc_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
+  {%- endif -%}
+
+{%- endif -%}
diff --git a/_layouts/default.html b/_layouts/default.html
index 3e988b46..33b31ffe 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -42,12 +42,20 @@ layout: table_wrappers
 
   <div class="side-bar">
     <div class="site-header">
-      <a href="{{ '/' | absolute_url }}" class="site-title lh-tight">{% include title.html %}</a>
+      <a href="{{ '/' | relative_url }}" class="site-title lh-tight">{% include title.html %}</a>
       <a href="#" id="menu-button" class="site-button">
         <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg>
       </a>
     </div>
     <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav">
+      {% assign pages_top_size = site.html_pages
+          | where_exp:"item", "item.title != nil"
+          | where_exp:"item", "item.parent == nil"
+          | where_exp:"item", "item.nav_exclude != true"
+          | size %}
+      {% if pages_top_size > 0 %}
+        {% include nav.html pages=site.html_pages key=nil %}
+      {% endif %}
       {% if site.just_the_docs.collections %}
         {% assign collections_size = site.just_the_docs.collections | size %}
         {% for collection_entry in site.just_the_docs.collections %}
@@ -55,14 +63,26 @@ layout: table_wrappers
           {% assign collection_value = collection_entry[1] %}
           {% assign collection = site[collection_key] %}
           {% if collection_value.nav_exclude != true %}
-            {% if collections_size > 1 %}
-              <div class="nav-category">{{ collection_value.name }}</div>
+            {% if collections_size > 1 or pages_top_size > 0 %}
+              {% if collection_value.nav_fold == true %}
+                <ul class="nav-list nav-category-list">
+                  <li class="nav-list-item{% if page.collection == collection_key %} active{% endif %}">
+                    {%- if collection.size > 0 -%}
+                    <a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a>
+                    {%- endif -%}
+                    <div class="nav-category">{{ collection_value.name }}</div>
+                    {% include nav.html pages=collection key=collection_key %}
+                  </li>
+                </ul>
+              {% else %}
+                <div class="nav-category">{{ collection_value.name }}</div>
+                {% include nav.html pages=collection key=collection_key %}
+              {% endif %}
+            {% else %}
+              {% include nav.html pages=collection key=collection_key %}
             {% endif %}
-            {% include nav.html pages=collection %}
           {% endif %}
         {% endfor %}
-      {% else %}
-        {% include nav.html pages=site.html_pages %}
       {% endif %}
     </nav>
     <footer class="site-footer">
@@ -102,21 +122,6 @@ layout: table_wrappers
     <div id="main-content-wrap" class="main-content-wrap">
       {% unless page.url == "/" %}
         {% if page.parent %}
-          {%- for node in pages_list -%}
-            {%- if node.parent == nil -%}
-              {%- if page.parent == node.title or page.grand_parent == node.title -%}
-                {%- assign first_level_url = node.url | absolute_url -%}
-              {%- endif -%}
-              {%- if node.has_children -%}
-                {%- assign children_list = pages_list | where: "parent", node.title -%}
-                {%- for child in children_list -%}
-                  {%- if page.url == child.url or page.parent == child.title -%}
-                    {%- assign second_level_url = child.url | absolute_url -%}
-                  {%- endif -%}
-                {%- endfor -%}
-              {%- endif -%}
-            {%- endif -%}
-          {%- endfor -%}
           <nav aria-label="Breadcrumb" class="breadcrumb-nav">
             <ol class="breadcrumb-nav-list">
               {% if page.grand_parent %}
@@ -141,10 +146,9 @@ layout: table_wrappers
           <hr>
           <h2 class="text-delta">Table of contents</h2>
           <ul>
-            {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
-            {% for child in children_list %}
+            {% for child in toc_list %}
               <li>
-                <a href="{{ child.url | absolute_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
+                <a href="{{ child.url | relative_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
               </li>
             {% endfor %}
           </ul>
diff --git a/_sass/code.scss b/_sass/code.scss
index f0389129..c0ce04db 100644
--- a/_sass/code.scss
+++ b/_sass/code.scss
@@ -109,213 +109,6 @@ figure.highlight {
   }
 }
 
-.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 //
-
 //
 // Code examples (rendered)
 //
diff --git a/_sass/color_schemes/dark.scss b/_sass/color_schemes/dark.scss
index a25f449c..bc9f8dbc 100644
--- a/_sass/color_schemes/dark.scss
+++ b/_sass/color_schemes/dark.scss
@@ -11,7 +11,22 @@ $link-color: $blue-000;
 $btn-primary-color: $blue-200;
 $base-button-color: $grey-dk-250;
 
-$code-background-color: $grey-dk-250;
 $search-background-color: $grey-dk-250;
 $table-background-color: $grey-dk-250;
 $feedback-color: darken($sidebar-color, 3%);
+
+//
+// The following highlight theme is more legible than that used for the light color scheme
+//
+
+// @import "./vendor/OneDarkJekyll/syntax-one-dark";
+// $code-background-color: #282c34;
+
+@import "./vendor/OneDarkJekyll/syntax-one-dark-vivid";
+$code-background-color: #31343f;
+
+// @import "./vendor/OneDarkJekyll/syntax-firewatch";
+// $code-background-color: #282c34;
+
+// @import "./vendor/OneDarkJekyll/syntax-firewatch-green";
+// $code-background-color: #282c34;
diff --git a/_sass/color_schemes/light.scss b/_sass/color_schemes/light.scss
index e69de29b..5eaa1ac8 100644
--- a/_sass/color_schemes/light.scss
+++ b/_sass/color_schemes/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/_sass/content.scss b/_sass/content.scss
index a53271ad..eb97e393 100644
--- a/_sass/content.scss
+++ b/_sass/content.scss
@@ -59,7 +59,7 @@
       ol {
         counter-reset: sub-counter;
 
-        li {
+        > li {
           &::before {
             content: counter(sub-counter, lower-alpha);
             counter-increment: sub-counter;
diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss
index e69de29b..d5c801e6 100644
--- a/_sass/custom/custom.scss
+++ b/_sass/custom/custom.scss
@@ -0,0 +1,4 @@
+$pink-000: #f77ef1;
+$pink-100: #f967f1;
+$pink-200: #e94ee1;
+$pink-300: #dd2cd4;
diff --git a/_sass/navigation.scss b/_sass/navigation.scss
index 521c15fa..0e673497 100644
--- a/_sass/navigation.scss
+++ b/_sass/navigation.scss
@@ -137,7 +137,7 @@
   padding-bottom: $sp-2;
   padding-left: $gutter-spacing-sm;
   font-weight: 600;
-  text-align: end;
+  text-align: start;
   text-transform: uppercase;
   border-bottom: $border $border-color;
   @include fs-2;
@@ -154,6 +154,26 @@
   }
 }
 
+.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 {
diff --git a/_sass/typography.scss b/_sass/typography.scss
index cadee362..103d2579 100644
--- a/_sass/typography.scss
+++ b/_sass/typography.scss
@@ -34,13 +34,11 @@ h4 code {
 h5,
 .text-epsilon {
   @include fs-3;
-  color: $grey-dk-200;
 }
 
 h6,
 .text-zeta {
   @include fs-2;
-  color: $grey-dk-200;
 }
 
 .text-small {
diff --git a/_sass/vendor/OneDarkJekyll/LICENSE b/_sass/vendor/OneDarkJekyll/LICENSE
new file mode 100644
index 00000000..01d0dfb2
--- /dev/null
+++ b/_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/_sass/vendor/OneDarkJekyll/README.md b/_sass/vendor/OneDarkJekyll/README.md
new file mode 100644
index 00000000..c0aedbad
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/README.md
@@ -0,0 +1,25 @@
+# OneDarkJekyll
+
+*Use Atom's One Dark syntax colors in your Jekyll powered blog!*
+
+It's LESS file which can be compiled to a - Pygments, Rouge compatible - stylesheet from Atom editor's One Dark syntax theme (and any theme based on it, for example One Dark Vivid, Firewatch, etc.).
+
+Download the stylesheet files or compile a new one from any Atom syntax theme which based on One Dark (the variable names in `colors.less` must match with One Dark's)
+
+## Create a new syntax stylesheet
+
+1. `npm install -g less less-plugin-clean-css`
+2. Clone this repository
+3. Download the `colors.css` file from the syntax theme's repository (for example https://github.com/atom/one-dark-syntax/blob/master/styles/colors.less in case of One-Dark)
+4. Put the previously downloaded file next to `syntax.less`
+5. Run `lessc syntax.less syntax.css --clean-css`
+6. Use the `syntax.css`
+
+It's not final and in case you find any error/improvement feel free to create a PR. :)
+
+----
+
+# UPDATES FOR USE IN JUST-THE-DOCS:
+
+1. Layout added in `*.css`
+2. Renamed `*.css` to `*.scss`
diff --git a/_sass/vendor/OneDarkJekyll/colors.less b/_sass/vendor/OneDarkJekyll/colors.less
new file mode 100644
index 00000000..284ee033
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/colors.less
@@ -0,0 +1,30 @@
+// Config -----------------------------------
+@syntax-hue:          220;
+@syntax-saturation:   13%;
+@syntax-brightness:   18%;
+
+
+// Monochrome -----------------------------------
+@mono-1: hsl(@syntax-hue, 14%, 71%); // default text
+@mono-2: hsl(@syntax-hue,  9%, 55%);
+@mono-3: hsl(@syntax-hue, 10%, 40%);
+
+// Colors -----------------------------------
+@hue-1:   hsl(187, 47%, 55%); // <-cyan
+@hue-2:   hsl(207, 82%, 66%); // <-blue
+@hue-3:   hsl(286, 60%, 67%); // <-purple
+@hue-4:   hsl( 95, 38%, 62%); // <-green
+
+@hue-5:   hsl(355, 65%, 65%); // <-red 1
+@hue-5-2: hsl(  5, 48%, 51%); // <-red 2
+
+@hue-6:   hsl( 29, 54%, 61%); // <-orange 1
+@hue-6-2: hsl( 39, 67%, 69%); // <-orange 2
+
+
+// Base colors -----------------------------------
+@syntax-fg:     @mono-1;
+@syntax-bg:     hsl(@syntax-hue, @syntax-saturation, @syntax-brightness);
+@syntax-gutter: darken(@syntax-fg, 26%);
+@syntax-guide:  fade(@syntax-fg, 15%);
+@syntax-accent: hsl(@syntax-hue, 100%, 66% );
\ No newline at end of file
diff --git a/_sass/vendor/OneDarkJekyll/syntax-firewatch-green.scss b/_sass/vendor/OneDarkJekyll/syntax-firewatch-green.scss
new file mode 100644
index 00000000..531c8b30
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/syntax-firewatch-green.scss
@@ -0,0 +1,65 @@
+
+.highlight, pre.highlight{background:#282c34;color:#abb2bf}
+.highlight pre{background:#282c34}
+.highlight .hll{background:#282c34}
+.highlight .c{color:#5c6370;font-style:italic}
+.highlight .err{color:#960050;background-color:#1e0010}
+.highlight .k{color:#5ba473}
+.highlight .l{color:#c8ae9d}
+.highlight .n{color:#abb2bf}
+.highlight .o{color:#abb2bf}
+.highlight .p{color:#abb2bf}
+.highlight .cm{color:#5c6370;font-style:italic}
+.highlight .cp{color:#5c6370;font-style:italic}
+.highlight .c1{color:#5c6370;font-style:italic}
+.highlight .cs{color:#5c6370;font-style:italic}
+.highlight .ge{font-style:italic}
+.highlight .gs{font-weight:700}
+.highlight .kc{color:#5ba473}
+.highlight .kd{color:#5ba473}
+.highlight .kn{color:#5ba473}
+.highlight .kp{color:#5ba473}
+.highlight .kr{color:#5ba473}
+.highlight .kt{color:#5ba473}
+.highlight .ld{color:#c8ae9d}
+.highlight .m{color:#d19a66}
+.highlight .s{color:#c8ae9d}
+.highlight .na{color:#d19a66}
+.highlight .nb{color:#e5c07b}
+.highlight .nc{color:#e5c07b}
+.highlight .no{color:#e5c07b}
+.highlight .nd{color:#e5c07b}
+.highlight .ni{color:#e5c07b}
+.highlight .ne{color:#e5c07b}
+.highlight .nf{color:#abb2bf}
+.highlight .nl{color:#e5c07b}
+.highlight .nn{color:#abb2bf}
+.highlight .nx{color:#abb2bf}
+.highlight .py{color:#e5c07b}
+.highlight .nt{color:#77b181}
+.highlight .nv{color:#e5c07b}
+.highlight .ow{font-weight:700}
+.highlight .w{color:#f8f8f2}
+.highlight .mf{color:#d19a66}
+.highlight .mh{color:#d19a66}
+.highlight .mi{color:#d19a66}
+.highlight .mo{color:#d19a66}
+.highlight .sb{color:#c8ae9d}
+.highlight .sc{color:#c8ae9d}
+.highlight .sd{color:#c8ae9d}
+.highlight .s2{color:#c8ae9d}
+.highlight .se{color:#c8ae9d}
+.highlight .sh{color:#c8ae9d}
+.highlight .si{color:#c8ae9d}
+.highlight .sx{color:#c8ae9d}
+.highlight .sr{color:#56b6c2}
+.highlight .s1{color:#c8ae9d}
+.highlight .ss{color:#56b6c2}
+.highlight .bp{color:#e5c07b}
+.highlight .vc{color:#e5c07b}
+.highlight .vg{color:#e5c07b}
+.highlight .vi{color:#77b181}
+.highlight .il{color:#d19a66}
+.highlight .gu{color:#75715e}
+.highlight .gd{color:#f92672}
+.highlight .gi{color:#a6e22e}
diff --git a/_sass/vendor/OneDarkJekyll/syntax-firewatch.scss b/_sass/vendor/OneDarkJekyll/syntax-firewatch.scss
new file mode 100644
index 00000000..fc6eacfb
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/syntax-firewatch.scss
@@ -0,0 +1,65 @@
+
+.highlight, pre.highlight{background:#282c34;color:#abb2bf}
+.highlight pre{background:#282c34}
+.highlight .hll{background:#282c34}
+.highlight .c{color:#5c6370;font-style:italic}
+.highlight .err{color:#960050;background-color:#1e0010}
+.highlight .k{color:#dd672c}
+.highlight .l{color:#c8ae9d}
+.highlight .n{color:#abb2bf}
+.highlight .o{color:#abb2bf}
+.highlight .p{color:#abb2bf}
+.highlight .cm{color:#5c6370;font-style:italic}
+.highlight .cp{color:#5c6370;font-style:italic}
+.highlight .c1{color:#5c6370;font-style:italic}
+.highlight .cs{color:#5c6370;font-style:italic}
+.highlight .ge{font-style:italic}
+.highlight .gs{font-weight:700}
+.highlight .kc{color:#dd672c}
+.highlight .kd{color:#dd672c}
+.highlight .kn{color:#dd672c}
+.highlight .kp{color:#dd672c}
+.highlight .kr{color:#dd672c}
+.highlight .kt{color:#dd672c}
+.highlight .ld{color:#c8ae9d}
+.highlight .m{color:#d19a66}
+.highlight .s{color:#c8ae9d}
+.highlight .na{color:#d19a66}
+.highlight .nb{color:#e5c07b}
+.highlight .nc{color:#e5c07b}
+.highlight .no{color:#e5c07b}
+.highlight .nd{color:#e5c07b}
+.highlight .ni{color:#e5c07b}
+.highlight .ne{color:#e5c07b}
+.highlight .nf{color:#abb2bf}
+.highlight .nl{color:#e5c07b}
+.highlight .nn{color:#abb2bf}
+.highlight .nx{color:#abb2bf}
+.highlight .py{color:#e5c07b}
+.highlight .nt{color:#e06c75}
+.highlight .nv{color:#e5c07b}
+.highlight .ow{font-weight:700}
+.highlight .w{color:#f8f8f2}
+.highlight .mf{color:#d19a66}
+.highlight .mh{color:#d19a66}
+.highlight .mi{color:#d19a66}
+.highlight .mo{color:#d19a66}
+.highlight .sb{color:#c8ae9d}
+.highlight .sc{color:#c8ae9d}
+.highlight .sd{color:#c8ae9d}
+.highlight .s2{color:#c8ae9d}
+.highlight .se{color:#c8ae9d}
+.highlight .sh{color:#c8ae9d}
+.highlight .si{color:#c8ae9d}
+.highlight .sx{color:#c8ae9d}
+.highlight .sr{color:#56b6c2}
+.highlight .s1{color:#c8ae9d}
+.highlight .ss{color:#56b6c2}
+.highlight .bp{color:#e5c07b}
+.highlight .vc{color:#e5c07b}
+.highlight .vg{color:#e5c07b}
+.highlight .vi{color:#e06c75}
+.highlight .il{color:#d19a66}
+.highlight .gu{color:#75715e}
+.highlight .gd{color:#f92672}
+.highlight .gi{color:#a6e22e}
diff --git a/_sass/vendor/OneDarkJekyll/syntax-one-dark-vivid.scss b/_sass/vendor/OneDarkJekyll/syntax-one-dark-vivid.scss
new file mode 100644
index 00000000..b2d681d7
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/syntax-one-dark-vivid.scss
@@ -0,0 +1,64 @@
+.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/_sass/vendor/OneDarkJekyll/syntax-one-dark.scss b/_sass/vendor/OneDarkJekyll/syntax-one-dark.scss
new file mode 100644
index 00000000..57c51392
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/syntax-one-dark.scss
@@ -0,0 +1,64 @@
+.highlight, pre.highlight{background:#282c34;color:#abb2bf}
+.highlight pre{background:#282c34}
+.highlight .hll{background:#282c34}
+.highlight .c{color:#5c6370;font-style:italic}
+.highlight .err{color:#960050;background-color:#1e0010}
+.highlight .k{color:#c678dd}
+.highlight .l{color:#98c379}
+.highlight .n{color:#abb2bf}
+.highlight .o{color:#abb2bf}
+.highlight .p{color:#abb2bf}
+.highlight .cm{color:#5c6370;font-style:italic}
+.highlight .cp{color:#5c6370;font-style:italic}
+.highlight .c1{color:#5c6370;font-style:italic}
+.highlight .cs{color:#5c6370;font-style:italic}
+.highlight .ge{font-style:italic}
+.highlight .gs{font-weight:700}
+.highlight .kc{color:#c678dd}
+.highlight .kd{color:#c678dd}
+.highlight .kn{color:#c678dd}
+.highlight .kp{color:#c678dd}
+.highlight .kr{color:#c678dd}
+.highlight .kt{color:#c678dd}
+.highlight .ld{color:#98c379}
+.highlight .m{color:#d19a66}
+.highlight .s{color:#98c379}
+.highlight .na{color:#d19a66}
+.highlight .nb{color:#e5c07b}
+.highlight .nc{color:#e5c07b}
+.highlight .no{color:#e5c07b}
+.highlight .nd{color:#e5c07b}
+.highlight .ni{color:#e5c07b}
+.highlight .ne{color:#e5c07b}
+.highlight .nf{color:#abb2bf}
+.highlight .nl{color:#e5c07b}
+.highlight .nn{color:#abb2bf}
+.highlight .nx{color:#abb2bf}
+.highlight .py{color:#e5c07b}
+.highlight .nt{color:#e06c75}
+.highlight .nv{color:#e5c07b}
+.highlight .ow{font-weight:700}
+.highlight .w{color:#f8f8f2}
+.highlight .mf{color:#d19a66}
+.highlight .mh{color:#d19a66}
+.highlight .mi{color:#d19a66}
+.highlight .mo{color:#d19a66}
+.highlight .sb{color:#98c379}
+.highlight .sc{color:#98c379}
+.highlight .sd{color:#98c379}
+.highlight .s2{color:#98c379}
+.highlight .se{color:#98c379}
+.highlight .sh{color:#98c379}
+.highlight .si{color:#98c379}
+.highlight .sx{color:#98c379}
+.highlight .sr{color:#56b6c2}
+.highlight .s1{color:#98c379}
+.highlight .ss{color:#56b6c2}
+.highlight .bp{color:#e5c07b}
+.highlight .vc{color:#e5c07b}
+.highlight .vg{color:#e5c07b}
+.highlight .vi{color:#e06c75}
+.highlight .il{color:#d19a66}
+.highlight .gu{color:#75715e}
+.highlight .gd{color:#f92672}
+.highlight .gi{color:#a6e22e}
diff --git a/_sass/vendor/OneDarkJekyll/syntax-variables.less b/_sass/vendor/OneDarkJekyll/syntax-variables.less
new file mode 100644
index 00000000..913a0fa5
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/syntax-variables.less
@@ -0,0 +1,56 @@
+@import "colors.less";
+
+// Official Syntax Variables -----------------------------------
+
+// General colors
+@syntax-text-color:            @syntax-fg;
+@syntax-cursor-color:          @syntax-accent;
+@syntax-selection-color:       lighten(@syntax-background-color, 10%);
+@syntax-selection-flash-color: @syntax-accent;
+@syntax-background-color:      @syntax-bg;
+
+// Guide colors
+@syntax-wrap-guide-color:          @syntax-guide;
+@syntax-indent-guide-color:        @syntax-guide;
+@syntax-invisible-character-color: @syntax-guide;
+
+// For find and replace markers
+@syntax-result-marker-color:          fade(@syntax-accent, 24%);
+@syntax-result-marker-color-selected: @syntax-accent;
+
+// Gutter colors
+@syntax-gutter-text-color:                @syntax-gutter;
+@syntax-gutter-text-color-selected:       @syntax-fg;
+@syntax-gutter-background-color:          @syntax-bg; // unused
+@syntax-gutter-background-color-selected: lighten(@syntax-bg, 2%);
+
+// Git colors - For git diff info. i.e. in the gutter
+@syntax-color-renamed:  hsl(208, 100%, 60%);
+@syntax-color-added:    hsl(150,  60%, 54%);
+@syntax-color-modified: hsl(40,   60%, 70%);
+@syntax-color-removed:  hsl(0,    70%, 60%);
+
+// For language entity colors
+@syntax-color-variable:   @hue-5;
+@syntax-color-constant:   @hue-6;
+@syntax-color-property:   @syntax-fg;
+@syntax-color-value:      @syntax-fg;
+@syntax-color-function:   @hue-2;
+@syntax-color-method:     @hue-2;
+@syntax-color-class:      @hue-6-2;
+@syntax-color-keyword:    @hue-3;
+@syntax-color-tag:        @hue-5;
+@syntax-color-attribute:  @hue-6;
+@syntax-color-import:     @hue-3;
+@syntax-color-snippet:    @hue-4;
+
+
+// Custom Syntax Variables -----------------------------------
+// Don't use in packages
+
+@syntax-cursor-line: hsla(@syntax-hue, 100%,  80%, .04); // needs to be semi-transparent to show search results
+
+@syntax-deprecated-fg: darken(@syntax-color-modified, 50%);
+@syntax-deprecated-bg: @syntax-color-modified;
+@syntax-illegal-fg:    white;
+@syntax-illegal-bg:    @syntax-color-removed;
\ No newline at end of file
diff --git a/_sass/vendor/OneDarkJekyll/syntax.less b/_sass/vendor/OneDarkJekyll/syntax.less
new file mode 100644
index 00000000..95d8e538
--- /dev/null
+++ b/_sass/vendor/OneDarkJekyll/syntax.less
@@ -0,0 +1,93 @@
+/*
+  LESS for Pygments
+*/
+
+@import "syntax-variables.less";
+
+pre.highlight,
+.highlight {
+  background: @syntax-bg;
+	color: @mono-1;
+}
+.highlight {
+ pre { background: @syntax-bg; }
+ .hll { background: @syntax-bg; }
+ .c {  color: @mono-3; font-style: italic;  } /* Comment */
+ .err { color: @syntax-illegal-fg; background-color: @syntax-illegal-bg; } /* Error */
+ .k { color: @hue-3;  } /* Keyword */
+ .l { color: @hue-4; } /* Literal */
+ .n { color: @mono-1; } /* Name */
+ .o { color: @mono-1; } /* Operator */
+ .p { color: @mono-1; } /* Punctuation */
+ .cm { color: @mono-3; font-style: italic; } /* Comment.Multiline */
+ .cp { color: @mono-3; font-style: italic; } /* Comment.Preproc */
+ .c1 { color: @mono-3; font-style: italic; } /* Comment.Single */
+ .cs { color: @mono-3; font-style: italic; } /* Comment.Special */
+ .ge { font-style: italic } /* Generic.Emph */
+ .gs { font-weight: bold } /* Generic.Strong */
+ .kc { color: @hue-3;  } /* Keyword.Constant */
+ .kd { color: @hue-3;  } /* Keyword.Declaration */
+ .kn { color: @hue-3;  } /* Keyword.Namespace */
+ .kp { color: @hue-3;  } /* Keyword.Pseudo */
+ .kr { color: @hue-3;  } /* Keyword.Reserved */
+ .kt { color: @hue-3;  } /* Keyword.Type */
+ .ld { color: @hue-4; } /* Literal.Date */
+ .m { color: @hue-6; } /* Literal.Number */
+ .s { color: @hue-4; } /* Literal.String */
+ .na { color: @hue-6; } /* Name.Attribute */
+ .nb { color: @hue-6-2; } /* Name.Builtin */
+ .nc { color: @hue-6-2; } /* Name.Class */
+ .no { color: @hue-6-2; } /* Name.Constant */
+ .nd { color: @hue-6-2; } /* Name.Decorator */
+ .ni { color: @hue-6-2; } /* Name.Entity */
+ .ne { color: @hue-6-2; } /* Name.Exception */
+ .nf { color: @mono-1; } /* Name.Function */
+ .nl { color: @hue-6-2; } /* Name.Label */
+ .nn { color: @mono-1; } /* Name.Namespace */
+ .nx { color: @mono-1; } /* Name.Other */
+ .py { color: @hue-6-2; } /* Name.Property */
+ .nt { color: @hue-5; } /* Name.Tag */
+ .nv { color: @hue-6-2; } /* Name.Variable */
+ .ow { font-weight: bold; } /* Operator.Word */
+ .w { color: #f8f8f2 } /* Text.Whitespace */
+ .mf { color: @hue-6; } /* Literal.Number.Float */
+ .mh { color: @hue-6; } /* Literal.Number.Hex */
+ .mi { color: @hue-6; } /* Literal.Number.Integer */
+ .mo { color: @hue-6; } /* Literal.Number.Oct */
+ .sb { color: @hue-4; } /* Literal.String.Backtick */
+ .sc { color: @hue-4; } /* Literal.String.Char */
+ .sd { color: @hue-4; } /* Literal.String.Doc */
+ .s2 { color: @hue-4; } /* Literal.String.Double */
+ .se { color: @hue-4; } /* Literal.String.Escape */
+ .sh { color: @hue-4; } /* Literal.String.Heredoc */
+ .si { color: @hue-4; } /* Literal.String.Interpol */
+ .sx { color: @hue-4; } /* Literal.String.Other */
+ .sr { color: @hue-1; } /* Literal.String.Regex */
+ .s1 { color: @hue-4; } /* Literal.String.Single */
+ .ss { color: @hue-1; } /* Literal.String.Symbol */
+ .bp { color: @hue-6-2; } /* Name.Builtin.Pseudo */
+ .vc { color: @hue-6-2; } /* Name.Variable.Class */
+ .vg { color: @hue-6-2; } /* Name.Variable.Global */
+ .vi { color: @hue-5; } /* Name.Variable.Instance */
+ .il { color: @hue-6; } /* Literal.Number.Integer.Long */
+
+ .gh { } /* Generic Heading & Diff Header */
+ .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */
+ .gd { color: @syntax-color-removed; } /* Generic.Deleted & Diff Deleted */
+ .gi { color: @syntax-color-added; } /* Generic.Inserted & Diff Inserted */
+	
+ ::selection { background-color: @syntax-selection-color; }
+
+ .language-json {
+   .w + .s2 { color: @hue-5; }
+   .kc { color: @hue-1; }
+ }
+
+ .language-python {
+   // python related modifications
+ }
+
+ .language-csharp {
+   // csharp related modifications
+ }
+}
diff --git a/assets/js/just-the-docs.js b/assets/js/just-the-docs.js
index c287ec08..dbc4f65d 100644
--- a/assets/js/just-the-docs.js
+++ b/assets/js/just-the-docs.js
@@ -69,7 +69,7 @@ function initNav() {
 
 function initSearch() {
   var request = new XMLHttpRequest();
-  request.open('GET', '{{ "assets/js/search-data.json" | absolute_url }}', true);
+  request.open('GET', '{{ "assets/js/search-data.json" | relative_url }}', true);
 
   request.onload = function(){
     if (request.status >= 200 && request.status < 400) {
@@ -454,7 +454,19 @@ jtd.getTheme = function() {
 
 jtd.setTheme = function(theme) {
   var cssFile = document.querySelector('[rel="stylesheet"]');
-  cssFile.setAttribute('href', '{{ "assets/css/just-the-docs-" | absolute_url }}' + theme + '.css');
+  cssFile.setAttribute('href', '{{ "assets/css/just-the-docs-" | relative_url }}' + theme + '.css');
+}
+
+// Scroll site-nav to ensure the link to the current page is visible
+
+function scrollNav() {
+  const href = document.location.href.split('#')[0].replace(/(.+?)\/+$/, "$1");
+  const siteNav = document.getElementById('site-nav');
+  const targetLink = siteNav.querySelector('a[href="' + href + '"], a[href="' + href + '/"]');
+  if(targetLink){
+    const rect = targetLink.getBoundingClientRect();
+    siteNav.scrollBy(0, rect.top - 3*rect.height);
+  }
 }
 
 // Document ready
@@ -464,6 +476,7 @@ jtd.onReady(function(){
   {%- if site.search_enabled != false %}
   initSearch();
   {%- endif %}
+  scrollNav();
 });
 
 })(window.jtd = window.jtd || {});
diff --git a/assets/js/zzzz-search-data.json b/assets/js/zzzz-search-data.json
index 6235244d..74dd0bad 100644
--- a/assets/js/zzzz-search-data.json
+++ b/assets/js/zzzz-search-data.json
@@ -3,7 +3,7 @@ permalink: /assets/js/search-data.json
 ---
 {
 {%- assign i = 0 -%}
-{%- assign pages_array = '' | split: '' -%}
+{%- assign pages_array = "" | split: "" -%}
 {%- assign pages_array = pages_array | push: site.html_pages -%}
 {%- if site.just_the_docs.collections -%}
   {%- for collection_entry in site.just_the_docs.collections -%}
@@ -50,7 +50,7 @@ permalink: /assets/js/search-data.json
     "doc": {{ page.title | jsonify }},
     "title": {{ title | jsonify }},
     "content": {{ content | replace: '</h', ' . </h' | replace: '<hr', ' . <hr' | replace: '</p', ' . </p' | replace: '<ul', ' . <ul' | replace: '</ul', ' . </ul' | replace: '<ol', ' . <ol' | replace: '</ol', ' . </ol' | replace: '</tr', ' . </tr' | replace: '<li', ' | <li' | replace: '</li', ' | </li' | replace: '</td', ' | </td' | replace: '<td', ' | <td' | replace: '</th', ' | </th' | replace: '<th', ' | <th' | strip_html | remove: 'Table of contents' | normalize_whitespace | replace: '. . .', '.' | replace: '. .', '.' | replace: '| |', '|' | append: ' ' | jsonify }},
-    "url": "{{ url | absolute_url }}",
+    "url": "{{ url | relative_url }}",
     "relUrl": "{{ url }}"
   }
         {%- assign i = i | plus: 1 -%}
@@ -61,7 +61,7 @@ permalink: /assets/js/search-data.json
     "doc": {{ page.title | jsonify }},
     "title": {{ page.title | jsonify }},
     "content": {{ parts[0] | replace: '</h', ' . </h' | replace: '<hr', ' . <hr' | replace: '</p', ' . </p' | replace: '<ul', ' . <ul' | replace: '</ul', ' . </ul' | replace: '<ol', ' . <ol' | replace: '</ol', ' . </ol' | replace: '</tr', ' . </tr' | replace: '<li', ' | <li' | replace: '</li', ' | </li' | replace: '</td', ' | </td' | replace: '<td', ' | <td' | replace: '</th', ' | </th' | replace: '<th', ' | <th' | strip_html | remove: 'Table of contents' | normalize_whitespace | replace: '. . .', '.' | replace: '. .', '.' | replace: '| |', '|' | append: ' ' | jsonify }},
-    "url": "{{ page.url | absolute_url }}",
+    "url": "{{ page.url | relative_url }}",
     "relUrl": "{{ page.url }}"
   }
         {%- assign i = i | plus: 1 -%}
diff --git a/docs/configuration.md b/docs/configuration.md
index b11f448f..e1ba5445 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -137,6 +137,59 @@ jtd.addEvent(toggleDarkMode, 'click', function(){
 
 See [Customization]({{ site.baseurl }}{% link docs/customization.md %}) for more information.
 
+## Callouts
+
+To use this feature, you need to configure a `color` and (optionally) `title` for each kind of callout you want to use, e.g.:
+
+```yaml
+callouts:
+  warning:
+    title: Warning
+    color: red
+```
+
+This uses the color `$red-000` for the background of the callout, and `$red-300` for the title and box decoration.[^dark] You can then style a paragraph as a `warning` callout like this:
+
+```markdown
+{: .warning }
+A paragraph...
+```
+
+[^dark]:
+    If you use the `dark` color scheme, this callout uses `$red-300` for the background, and `$red-000` for the title. 
+
+The colors `grey-lt`, `grey-dk`, `purple`, `blue`, `green`, `yellow`, and `red` are predefined; to use a custom color, you need to define its `000` and `300` levels in your SCSS files. For example, to use `pink`, add the following to your `_sass/custom/custom.scss` file:
+
+```scss
+$pink-000: #f77ef1;
+$pink-100: #f967f1;
+$pink-200: #e94ee1;
+$pink-300: #dd2cd4;
+```
+
+You can override the default `opacity` of the background for a particular callout, e.g.:
+
+```yaml
+callouts:
+  custom:
+    color: pink
+    opacity: 0.3
+```
+
+You can change the default opacity (`0.2`) for all callouts, e.g.:
+
+```yaml
+callouts_opacity: 0.3
+```
+
+You can also adjust the overall level of callouts.
+The value of `callouts_level` is either `quiet` or `loud`;
+`loud` increases the saturation and lightness of the backgrounds.
+The default level is `quiet` when using the `light` or custom color schemes,
+and `loud` when using the `dark color scheme.`
+
+See [Callouts]({{ site.baseurl }}{% link docs/ui-components/callouts.md %}) for more information.
+
 ## Google Analytics
 
 ```yaml
@@ -149,39 +202,43 @@ ga_tracking_anonymize_ip: true # Use GDPR compliant Google Analytics settings (t
 ## Document collections
 
 By default, the navigation and search include normal [pages](https://jekyllrb.com/docs/pages/).
-Instead, you can also use [Jekyll collections](https://jekyllrb.com/docs/collections/) which group documents semantically together.
+You can also use [Jekyll collections](https://jekyllrb.com/docs/collections/) which group documents semantically together.
 
-For example, put all your documentation files in the `_docs` folder and create the `docs` collection:
+For example, put all your test files in the `_tests` folder and create the `tests` collection:
 
 ```yaml
 # Define Jekyll collections
 collections:
-  # Define a collection named "docs", its documents reside in the "_docs" directory
-  docs:
+  # Define a collection named "tests", its documents reside in the "_tests" directory
+  tests:
     permalink: "/:collection/:path/"
     output: true
 
 just_the_docs:
   # Define which collections are used in just-the-docs
   collections:
-    # Reference the "docs" collection
-    docs:
+    # Reference the "tests" collection
+    tests:
       # Give the collection a name
-      name: Documentation
+      name: Tests
       # Exclude the collection from the navigation
       # Supports true or false (default)
-      nav_exclude: false
+      # nav_exclude: true
+      # Fold the collection in the navigation
+      # Supports true or false (default)
+      # nav_fold: true
       # Exclude the collection from the search
       # Supports true or false (default)
-      search_exclude: false
+      # search_exclude: true
 ```
+The navigation for all your normal pages (if any) is displayed before those in collections.
 
 You can reference multiple collections.
 This creates categories in the navigation with the configured names.
 
 ```yaml
 collections:
-  docs:
+  tests:
     permalink: "/:collection/:path/"
     output: true
   tutorials:
@@ -190,8 +247,11 @@ collections:
 
 just_the_docs:
   collections:
-    docs:
-      name: Documentation
+    tests:
+      name: Tests
     tutorials:
       name: Tutorials
 ```
+When *all* your pages are in a single collection, its name is not displayed.
+
+The navigation for each collection is a separate name space for page titles: a page in one collection cannot be a child of a page in a different collection, or of a normal page.
diff --git a/docs/index-test.md b/docs/index-test.md
index 920aec3e..b1aded06 100644
--- a/docs/index-test.md
+++ b/docs/index-test.md
@@ -4,6 +4,22 @@ title: Markdown kitchen sink
 nav_order: 99
 ---
 
+<button class="btn js-toggle-dark-mode">Preview dark color scheme</button>
+
+<script>
+const toggleDarkMode = document.querySelector('.js-toggle-dark-mode');
+
+jtd.addEvent(toggleDarkMode, 'click', function(){
+  if (jtd.getTheme() === 'dark') {
+    jtd.setTheme('light');
+    toggleDarkMode.textContent = 'Preview dark color scheme';
+  } else {
+    jtd.setTheme('dark');
+    toggleDarkMode.textContent = 'Return to the light side';
+  }
+});
+</script>
+
 Text can be **bold**, _italic_, or ~~strikethrough~~.
 
 [Link to another page](another-page).
@@ -172,6 +188,41 @@ Term2
 
 ### More code
 
+```python{% raw %}
+def dump_args(func):
+    "This decorator dumps out the arguments passed to a function before calling it"
+    argnames = func.func_code.co_varnames[:func.func_code.co_argcount]
+    fname = func.func_name
+    def echo_func(*args,**kwargs):
+        print fname, ":", ', '.join(
+            '%s=%r' % entry
+            for entry in zip(argnames,args) + kwargs.items())
+        return func(*args, **kwargs)
+    return echo_func
+
+@dump_args
+def f1(a,b,c):
+    print a + b + c
+
+f1(1, 2, 3)
+
+def precondition(precondition, use_conditions=DEFAULT_ON):
+    return conditions(precondition, None, use_conditions)
+
+def postcondition(postcondition, use_conditions=DEFAULT_ON):
+    return conditions(None, postcondition, use_conditions)
+
+class conditions(object):
+    __slots__ = ('__precondition', '__postcondition')
+
+    def __init__(self, pre, post, use_conditions=DEFAULT_ON):
+        if not use_conditions:
+            pre, post = None, None
+
+        self.__precondition  = pre
+        self.__postcondition = post
+{% endraw %}```
+
 ```
 Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.
 ```
diff --git a/docs/navigation-structure.md b/docs/navigation-structure.md
index 535a2e0e..41edccc1 100644
--- a/docs/navigation-structure.md
+++ b/docs/navigation-structure.md
@@ -5,7 +5,6 @@ nav_order: 5
 ---
 
 # Navigation Structure
-
 {: .no_toc }
 
 <details open markdown="block">
@@ -13,7 +12,7 @@ nav_order: 5
     Table of contents
   </summary>
   {: .text-delta }
-1. TOC
+- TOC
 {:toc}
 </details>
 
@@ -32,7 +31,6 @@ By default, all pages will appear as top level pages in the main nav unless a pa
 To specify a page order, you can use the `nav_order` parameter in your pages' YAML front matter.
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -59,7 +57,6 @@ By default, all Capital letters come before all lowercase letters; you can add `
 For specific pages that you do not wish to include in the main navigation, e.g. a 404 page or a landing page, use the `nav_exclude: true` parameter in the YAML front matter for that page.
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -113,7 +110,6 @@ On the parent pages, add this YAML front matter parameter:
 - `has_children: true` (tells us that this is a parent page)
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -135,7 +131,6 @@ Here we're setting up the UI Components landing page that is available at `/docs
 On child pages, simply set the `parent:` YAML front matter to whatever the parent's page title is and set a nav order (this number is now scoped within the section).
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -155,7 +150,6 @@ The Buttons page appears as a child of UI Components and appears second in the U
 By default, all pages with children will automatically append a Table of Contents which lists the child pages after the parent page's content. To disable this auto Table of Contents, set `has_toc: false` in the parent page's YAML front matter.
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -179,7 +173,6 @@ Child pages can also have children (grandchildren). This is achieved by using a
 1. Add the `parent` and `grand_parent` attribute to the grandchild
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -227,7 +220,6 @@ This would create the following navigation structure:
 To add auxiliary links to your site (in the upper right on all pages), add it to the `aux_links` [configuration option]({{ site.baseurl }}{% link docs/configuration.md %}#aux-links) in your site's `_config.yml` file.
 
 #### Example
-
 {: .no_toc }
 
 ```yaml
@@ -244,16 +236,13 @@ aux_links:
 To generate a Table of Contents on your docs pages, you can use the `{:toc}` method from Kramdown, immediately after an `<ol>` in Markdown. This will automatically generate an ordered list of anchor links to various sections of the page based on headings and heading levels. There may be occasions where you're using a heading and you don't want it to show up in the TOC, so to skip a particular heading use the `{: .no_toc }` CSS class.
 
 #### Example
-
 {: .no_toc }
 
 ```markdown
 # Navigation Structure
-
 {: .no_toc }
 
 ## Table of contents
-
 {: .no_toc .text-delta }
 
 1. TOC
diff --git a/docs/tests/index.md b/docs/tests/index.md
deleted file mode 100644
index 27fc4d75..00000000
--- a/docs/tests/index.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: default
-title: Tests
-has_children: true
-nav_order: 100
----
-
-# Tests
-
- The main documentation pages of this theme illustrate the use of many of its features, which to some extent tests their implementation. The pages linked below provide further test cases for particular features, and may be useful for regression testing when developing new features.
- 
-The default configuration does not include the test pages. To include them, *commment-out* the following line in `_config.yml`:
-
-```yaml
-, "docs/tests/"
-```
-so that it is:
-```yaml
-# , "docs/tests/"
-```
-
-(Apparently Jekyll's `include` does *not* override `exclude`  for the same folder...)
diff --git a/docs/tests/navigation/disambiguation/a.md b/docs/tests/navigation/disambiguation/a.md
deleted file mode 100644
index b680fe6a..00000000
--- a/docs/tests/navigation/disambiguation/a.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: Tests for disambiguation A
-has_children: true
----
-
-# A
-
-A top-level page
-
-```yaml
-title: Tests for disambiguation A
-has_children: true
-```
diff --git a/docs/tests/navigation/disambiguation/b.md b/docs/tests/navigation/disambiguation/b.md
deleted file mode 100644
index 23403e8a..00000000
--- a/docs/tests/navigation/disambiguation/b.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: Tests for disambiguation B
-has_children: true
----
-
-# B
-
-A top-level page
-
-```yaml
-title: Tests for disambiguation B
-has_children: true
-```
diff --git a/docs/tests/navigation/disambiguation/ca.md b/docs/tests/navigation/disambiguation/ca.md
deleted file mode 100644
index e645044e..00000000
--- a/docs/tests/navigation/disambiguation/ca.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Tests for disambiguation C
-parent: Tests for disambiguation A
-has_children: true
----
-
-# C
-
-A child of page A, and parent of page D
-
-```yaml
-title: Tests for disambiguation C
-parent: Tests for disambiguation A
-has_children: true
-```
diff --git a/docs/tests/navigation/disambiguation/cb.md b/docs/tests/navigation/disambiguation/cb.md
deleted file mode 100644
index d15844ff..00000000
--- a/docs/tests/navigation/disambiguation/cb.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Tests for disambiguation C
-parent: Tests for disambiguation B
-has_children: true
----
-
-# C
-
-A child of page B, and parent of page D
-
-```yaml
-title: Tests for disambiguation C
-parent: Tests for disambiguation B
-has_children: true
-```
diff --git a/docs/tests/navigation/disambiguation/dca.md b/docs/tests/navigation/disambiguation/dca.md
deleted file mode 100644
index c01dbbbc..00000000
--- a/docs/tests/navigation/disambiguation/dca.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Tests for disambiguation D
-parent: Tests for disambiguation C
-grand_parent: Tests for disambiguation A
----
-
-# D
-
-A grandchild of page A
-
-```yaml
-title: Tests for disambiguation D
-parent: Tests for disambiguation C
-grand_parent: Tests for disambiguation A
-```
diff --git a/docs/tests/navigation/disambiguation/dcb.md b/docs/tests/navigation/disambiguation/dcb.md
deleted file mode 100644
index f80d83d2..00000000
--- a/docs/tests/navigation/disambiguation/dcb.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Tests for disambiguation D
-parent: Tests for disambiguation C
-grand_parent: Tests for disambiguation B
----
-
-# D
-
-A grandchild of page B
-
-```yaml
-title: Tests for disambiguation D
-parent: Tests for disambiguation C
-grand_parent: Tests for disambiguation B
-```
diff --git a/docs/tests/navigation/disambiguation/index.md b/docs/tests/navigation/disambiguation/index.md
deleted file mode 100644
index 3d8f799c..00000000
--- a/docs/tests/navigation/disambiguation/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: Disambiguation 
-parent: Navigation
-grand_parent: Tests
----
-
-# Disambiguation
-
-When different pages with children have the same title, referencing the relevant grandparent in the children disambiguates which page is intended.
-
-- [Page A](a/) has a child [page with title C](ca/), and a grandchild [page with title D](dca/).
-- [Page B](b/) has a child [page with title C](cb/), and a grandchild [page with title D](dcb/).
-- The grandchild pages specify their parent and grandparent pages, so there is no ambiguity.
diff --git a/docs/tests/navigation/exclusion/0.md b/docs/tests/navigation/exclusion/0.md
deleted file mode 100644
index 96634dd5..00000000
--- a/docs/tests/navigation/exclusion/0.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-title: Tests for exclusion 0
-has_children: true
-nav_exclude: true
----
-# Tests for exclusion 0
-
-```yaml
-title: Tests for exclusion 0
-has_children: true
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/00.md b/docs/tests/navigation/exclusion/00.md
deleted file mode 100644
index 44aadd1e..00000000
--- a/docs/tests/navigation/exclusion/00.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-title: Tests for exclusion 00
-parent: Tests for exclusion 0
-has_children: true
-nav_exclude: true
----
-# Tests for exclusion 00
-
-```yaml
-title: Tests for exclusion 00
-parent: Tests for exclusion 0
-has_children: true
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/000.md b/docs/tests/navigation/exclusion/000.md
deleted file mode 100644
index 5846671e..00000000
--- a/docs/tests/navigation/exclusion/000.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 000
-parent: Tests for exclusion 00
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: true
----
-# Tests for exclusion 000
-
-```yaml
-title: Tests for exclusion 000
-parent: Tests for exclusion 00
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/001.md b/docs/tests/navigation/exclusion/001.md
deleted file mode 100644
index 3afe961f..00000000
--- a/docs/tests/navigation/exclusion/001.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 001
-parent: Tests for exclusion 00
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: false
----
-# Tests for exclusion 001
-
-```yaml
-title: Tests for exclusion 001
-parent: Tests for exclusion 00
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/01.md b/docs/tests/navigation/exclusion/01.md
deleted file mode 100644
index 0855b2cb..00000000
--- a/docs/tests/navigation/exclusion/01.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-title: Tests for exclusion 01
-parent: Tests for exclusion 0
-has_children: true
-nav_exclude: false
----
-# Tests for exclusion 01
-
-```yaml
-title: Tests for exclusion 01
-parent: Tests for exclusion 0
-has_children: true
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/010.md b/docs/tests/navigation/exclusion/010.md
deleted file mode 100644
index c9944edf..00000000
--- a/docs/tests/navigation/exclusion/010.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 010
-parent: Tests for exclusion 01
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: true
----
-# Tests for exclusion 010
-
-```yaml
-title: Tests for exclusion 010
-parent: Tests for exclusion 01
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/011.md b/docs/tests/navigation/exclusion/011.md
deleted file mode 100644
index f8359b44..00000000
--- a/docs/tests/navigation/exclusion/011.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 011
-parent: Tests for exclusion 01
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: false
----
-# Tests for exclusion 011
-
-```yaml
-title: Tests for exclusion 011
-parent: Tests for exclusion 01
-grand_parent: Tests for exclusion 0
-has_children: false
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/1.md b/docs/tests/navigation/exclusion/1.md
deleted file mode 100644
index 0b6bff87..00000000
--- a/docs/tests/navigation/exclusion/1.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-title: Tests for exclusion 1
-has_children: true
-nav_exclude: false
----
-# Tests for exclusion 1
-
-```yaml
-title: Tests for exclusion 1
-has_children: true
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/10.md b/docs/tests/navigation/exclusion/10.md
deleted file mode 100644
index 624d1159..00000000
--- a/docs/tests/navigation/exclusion/10.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-title: Tests for exclusion 10
-parent: Tests for exclusion 1
-has_children: true
-nav_exclude: true
----
-# Tests for exclusion 10
-
-```yaml
-title: Tests for exclusion 10
-parent: Tests for exclusion 1
-has_children: true
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/100.md b/docs/tests/navigation/exclusion/100.md
deleted file mode 100644
index 89a80906..00000000
--- a/docs/tests/navigation/exclusion/100.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 100
-parent: Tests for exclusion 10
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: true
----
-# Tests for exclusion 100
-
-```yaml
-title: Tests for exclusion 100
-parent: Tests for exclusion 10
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/101.md b/docs/tests/navigation/exclusion/101.md
deleted file mode 100644
index 240dac76..00000000
--- a/docs/tests/navigation/exclusion/101.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 101
-parent: Tests for exclusion 10
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: false
----
-# Tests for exclusion 101
-
-```yaml
-title: Tests for exclusion 101
-parent: Tests for exclusion 10
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/11.md b/docs/tests/navigation/exclusion/11.md
deleted file mode 100644
index 04cef636..00000000
--- a/docs/tests/navigation/exclusion/11.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-title: Tests for exclusion 11
-parent: Tests for exclusion 1
-has_children: true
-nav_exclude: false
----
-# Tests for exclusion 11
-
-```yaml
-title: Tests for exclusion 11
-parent: Tests for exclusion 1
-has_children: true
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/110.md b/docs/tests/navigation/exclusion/110.md
deleted file mode 100644
index 7c24237e..00000000
--- a/docs/tests/navigation/exclusion/110.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 110
-parent: Tests for exclusion 11
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: true
----
-# Tests for exclusion 110
-
-```yaml
-title: Tests for exclusion 110
-parent: Tests for exclusion 11
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/111.md b/docs/tests/navigation/exclusion/111.md
deleted file mode 100644
index 230b55b8..00000000
--- a/docs/tests/navigation/exclusion/111.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: default
-title: Tests for exclusion 111
-parent: Tests for exclusion 11
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: false
----
-# Tests for exclusion 111
-
-```yaml
-title: Tests for exclusion 111
-parent: Tests for exclusion 11
-grand_parent: Tests for exclusion 1
-has_children: false
-nav_exclude: false
-```
diff --git a/docs/tests/navigation/exclusion/excluded.md b/docs/tests/navigation/exclusion/excluded.md
deleted file mode 100644
index 5f67d2b0..00000000
--- a/docs/tests/navigation/exclusion/excluded.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-layout: default
-nav_exclude: true
----
-# Tests for exclusion untitled and excluded
-
-This page does not have a `title`, and it is explicitly excluded from the navigation
-
-```yaml
-nav_exclude: true
-```
diff --git a/docs/tests/navigation/exclusion/index.md b/docs/tests/navigation/exclusion/index.md
deleted file mode 100644
index b7d4a3b4..00000000
--- a/docs/tests/navigation/exclusion/index.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-layout: default
-title: Exclusion
-parent: Navigation
-grand_parent: Tests
----
-
-# Exclusion
-
-Pages excluded from the main navigation can have parents and children. Navigation to and between excluded pages can be supported by the auto-generating list of child pages inserted at the bottom of each page, and by links to parents in the breadcrumbs at the top of each page.
-
-The following tests cover all combinations of excluded and included pages for the top level, child pages, and grandchild pages. The last binary digit in a page title indicates whether the page is included (1) or excluded (0); preceding digits refer to its parent and grandparent.
-
-## Included in main navigation
-
-- [Tests for exclusion 1](1/)
-- [Tests for exclusion 11](11/)
-- [Tests for exclusion 111](111/)
-
-## Included only in child navigation
-
-- [Tests for exclusion 110](110/)
-- [Tests for exclusion 10](10/)
-- [Tests for exclusion 101](101/)
-- [Tests for exclusion 100](100/)
-- [Tests for exclusion 01](01/)
-- [Tests for exclusion 011](011/)
-- [Tests for exclusion 010](010/)
-- [Tests for exclusion 00](00/)
-- [Tests for exclusion 001](001/)
-- [Tests for exclusion 000](000/)
-
-## Not included in main or child navigation
-
-- [Tests for exclusion 0](0/)
-- ["Untitled"](untitled/)
diff --git a/docs/tests/navigation/exclusion/untitled.md b/docs/tests/navigation/exclusion/untitled.md
deleted file mode 100644
index 4d8b4b40..00000000
--- a/docs/tests/navigation/exclusion/untitled.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: default
----
-# Tests for exclusion untitled
-
-This page does not have a `title`, and it is excluded from the navigation -- unless it is located in a Jekyll collection (which provides default titles). To exclude a title-less page from the navigation, regardless of whether it is located in a collection, set `nav_exclude: true`.
diff --git a/docs/tests/navigation/index.md b/docs/tests/navigation/index.md
deleted file mode 100644
index 90c67117..00000000
--- a/docs/tests/navigation/index.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: default
-title: Navigation
-parent: Tests
-has_children: true
----
-
-# Navigation
diff --git a/docs/tests/navigation/order/default/10.md b/docs/tests/navigation/order/default/10.md
deleted file mode 100644
index 7e1d82a7..00000000
--- a/docs/tests/navigation/order/default/10.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: "10"
-parent: Default
-grand_parent: Tests for order
----
-
-# 10
-
-```yaml
-title: "10"
-parent: Default
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/default/2.md b/docs/tests/navigation/order/default/2.md
deleted file mode 100644
index 158f49a1..00000000
--- a/docs/tests/navigation/order/default/2.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: "2"
-parent: Default
-grand_parent: Tests for order
----
-
-# 2
-
-```yaml
-title: "2"
-parent: Default
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/default/a.md b/docs/tests/navigation/order/default/a.md
deleted file mode 100644
index bd7e347f..00000000
--- a/docs/tests/navigation/order/default/a.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: A
-parent: Default
-grand_parent: Tests for order
----
-
-# A
-
-```yaml
-title: A
-parent: Default
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/default/aa-lower.md b/docs/tests/navigation/order/default/aa-lower.md
deleted file mode 100644
index 295ed08e..00000000
--- a/docs/tests/navigation/order/default/aa-lower.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: aa
-parent: Default
-grand_parent: Tests for order
----
-
-# aa
-
-```yaml
-title: aa
-parent: Default
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/default/aa.md b/docs/tests/navigation/order/default/aa.md
deleted file mode 100644
index f100030e..00000000
--- a/docs/tests/navigation/order/default/aa.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: Aa
-parent: Default
-grand_parent: Tests for order
----
-
-# Aa
-
-```yaml
-title: Aa
-parent: Default
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/default/index.md b/docs/tests/navigation/order/default/index.md
deleted file mode 100644
index c276bb3e..00000000
--- a/docs/tests/navigation/order/default/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-title: Default
-parent: Tests for order
-nav_order: 1
-has_children: true
----
-
-# Default Order
-
-When `nav_order` fields are omitted, the pages are ordered alphabetically by their titles.
-
-By default, all Capital letters come before all lowercase letters; you can add `nav_sort: case_insensitive` in the configuration file to ignore the case).
-
-Digits precede letters, and numeric titles are ordered lexicographically: `10` precedes `2` (in contrast to explicit numeric `nav_order` values).
diff --git a/docs/tests/navigation/order/floats/-1.1.md b/docs/tests/navigation/order/floats/-1.1.md
deleted file mode 100644
index ee040c82..00000000
--- a/docs/tests/navigation/order/floats/-1.1.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "-1.1"
-nav_order: -1.1
-parent: Floats
-grand_parent: Tests for order
----
-
-# -1.1
-
-```yaml
-title: "-1.1"
-nav_order: -1.1
-parent: Floats
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/floats/0.0.md b/docs/tests/navigation/order/floats/0.0.md
deleted file mode 100644
index f5e516dd..00000000
--- a/docs/tests/navigation/order/floats/0.0.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "0.0"
-nav_order: 0.0
-parent: Floats
-grand_parent: Tests for order
----
-
-# 0.0
-
-```yaml
-title: "0.0"
-nav_order: 0.0
-parent: Floats
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/floats/10.0.md b/docs/tests/navigation/order/floats/10.0.md
deleted file mode 100644
index 797f81d1..00000000
--- a/docs/tests/navigation/order/floats/10.0.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "10.0"
-nav_order: 10.0
-parent: Floats
-grand_parent: Tests for order
----
-
-# 10.0
-
-```yaml
-title: "10.0"
-nav_order: 10.0
-parent: Floats
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/floats/2.2222.md b/docs/tests/navigation/order/floats/2.2222.md
deleted file mode 100644
index 89109469..00000000
--- a/docs/tests/navigation/order/floats/2.2222.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "2.2222"
-nav_order: 2.2222
-parent: Floats
-grand_parent: Tests for order
----
-
-# 2.2222
-
-```yaml
-title: "2.2222"
-nav_order: 2.2222
-parent: Floats
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/floats/index.md b/docs/tests/navigation/order/floats/index.md
deleted file mode 100644
index 2846629b..00000000
--- a/docs/tests/navigation/order/floats/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-title: Floats
-parent: Tests for order
-nav_order: 4
-has_children: true
----
-
-# Floating-Point Order
-
-When `nav_order` fields are floating-point numbers, the pages are ordered in increasing order of the numerical values.
-
-Floats include `0.0` and negative values. 
diff --git a/docs/tests/navigation/order/index.md b/docs/tests/navigation/order/index.md
deleted file mode 100644
index 9dbff4a5..00000000
--- a/docs/tests/navigation/order/index.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Order
-parent: Navigation
-grand_parent: Tests
----
-
-# Order
-
-The value of `nav_order` can be numbers (integers, floats) and/or strings. The following tests illustrate their effects.
-
-- [Default](default/), using `title` instead of `nav_order` fields.
-- [Strings](strings/), lexicographically ordered, possibly case-insensitively.
-- [Integers](integers/), numerically ordered.
-- [Floats](floats/), numerically ordered.
-- [Mixture](mixture/), with numbers before strings.
diff --git a/docs/tests/navigation/order/integers/-1.md b/docs/tests/navigation/order/integers/-1.md
deleted file mode 100644
index 8b1444ea..00000000
--- a/docs/tests/navigation/order/integers/-1.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "-1"
-nav_order: -1
-parent: Integers
-grand_parent: Tests for order
----
-
-# -1
-
-```yaml
-title: "-1"
-nav_order: -1
-parent: Integers
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/integers/0.md b/docs/tests/navigation/order/integers/0.md
deleted file mode 100644
index 21b13277..00000000
--- a/docs/tests/navigation/order/integers/0.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "0"
-nav_order: 0
-parent: Integers
-grand_parent: Tests for order
----
-
-# 0
-
-```yaml
-title: "0"
-nav_order: 0
-parent: Integers
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/integers/10.md b/docs/tests/navigation/order/integers/10.md
deleted file mode 100644
index 41571511..00000000
--- a/docs/tests/navigation/order/integers/10.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "10"
-nav_order: 10
-parent: Integers
-grand_parent: Tests for order
----
-
-# 10
-
-```yaml
-title: "10"
-nav_order: 10
-parent: Integers
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/integers/2.md b/docs/tests/navigation/order/integers/2.md
deleted file mode 100644
index 2ebb1cab..00000000
--- a/docs/tests/navigation/order/integers/2.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "2"
-nav_order: 2
-parent: Integers
-grand_parent: Tests for order
----
-
-# 2
-
-```yaml
-title: "2"
-nav_order: 2
-parent: Integers
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/integers/index.md b/docs/tests/navigation/order/integers/index.md
deleted file mode 100644
index 077cdc56..00000000
--- a/docs/tests/navigation/order/integers/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-title: Integers
-parent: Tests for order
-nav_order: 3
-has_children: true
----
-
-# Integer Order
-
-When `nav_order` fields are integers, the pages are ordered in increasing order of the numerical values.
-
-Integers include `0` and negative values. Integers can be reused for top-level pages and for different sets of child pages. 
diff --git a/docs/tests/navigation/order/mixture/-1.1.md b/docs/tests/navigation/order/mixture/-1.1.md
deleted file mode 100644
index 668d6421..00000000
--- a/docs/tests/navigation/order/mixture/-1.1.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "-1.1"
-nav_order: -1.1
-parent: Mixture
-grand_parent: Tests for order
----
-
-# -1.1
-
-```yaml
-title: "-1.1"
-nav_order: -1.1
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/-1.md b/docs/tests/navigation/order/mixture/-1.md
deleted file mode 100644
index e1c5a126..00000000
--- a/docs/tests/navigation/order/mixture/-1.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "-1"
-nav_order: -1
-parent: Mixture
-grand_parent: Tests for order
----
-
-# -1
-
-```yaml
-title: "-1"
-nav_order: -1
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/0.0.md b/docs/tests/navigation/order/mixture/0.0.md
deleted file mode 100644
index a2006d8e..00000000
--- a/docs/tests/navigation/order/mixture/0.0.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "0.0"
-nav_order: 0.0
-parent: Mixture
-grand_parent: Tests for order
----
-
-# 0.0
-
-```yaml
-title: "0.0"
-nav_order: 0.0
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/0.md b/docs/tests/navigation/order/mixture/0.md
deleted file mode 100644
index 14f137fe..00000000
--- a/docs/tests/navigation/order/mixture/0.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "0"
-nav_order: 0
-parent: Mixture
-grand_parent: Tests for order
----
-
-# 0
-
-```yaml
-title: "0"
-nav_order: 0
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/10.0.md b/docs/tests/navigation/order/mixture/10.0.md
deleted file mode 100644
index 70308a6b..00000000
--- a/docs/tests/navigation/order/mixture/10.0.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "10.0"
-nav_order: 10.0
-parent: Mixture
-grand_parent: Tests for order
----
-
-# 10.0
-
-```yaml
-title: "10.0"
-nav_order: 10.0
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/10.md b/docs/tests/navigation/order/mixture/10.md
deleted file mode 100644
index 542ae3ff..00000000
--- a/docs/tests/navigation/order/mixture/10.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: "10"
-parent: Mixture
-grand_parent: Tests for order
----
-
-# 10
-
-```yaml
-title: "10"
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/2.2222.md b/docs/tests/navigation/order/mixture/2.2222.md
deleted file mode 100644
index 2520d512..00000000
--- a/docs/tests/navigation/order/mixture/2.2222.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "2.2222"
-nav_order: 2.2222
-parent: Mixture
-grand_parent: Tests for order
----
-
-# 2.2222
-
-```yaml
-title: "2.2222"
-nav_order: 2.2222
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/2.md b/docs/tests/navigation/order/mixture/2.md
deleted file mode 100644
index 2ae45535..00000000
--- a/docs/tests/navigation/order/mixture/2.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: "2"
-parent: Mixture
-grand_parent: Tests for order
----
-
-# 2
-
-```yaml
-title: "2"
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/a.md b/docs/tests/navigation/order/mixture/a.md
deleted file mode 100644
index 342b05f0..00000000
--- a/docs/tests/navigation/order/mixture/a.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-title: A
-parent: Mixture
-grand_parent: Tests for order
----
-
-# A
-
-```yaml
-title: A
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/aa-lower.md b/docs/tests/navigation/order/mixture/aa-lower.md
deleted file mode 100644
index 2d639853..00000000
--- a/docs/tests/navigation/order/mixture/aa-lower.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: aa
-nav_order: "aa"
-parent: Mixture
-grand_parent: Tests for order
----
-
-# aa
-
-```yaml
-title: aa
-nav_order: "aa"
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/aa.md b/docs/tests/navigation/order/mixture/aa.md
deleted file mode 100644
index 69cf05f3..00000000
--- a/docs/tests/navigation/order/mixture/aa.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Aa
-nav_order: "Aa"
-parent: Mixture
-grand_parent: Tests for order
----
-
-# Aa
-
-```yaml
-title: Aa
-nav_order: "Aa"
-parent: Mixture
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/mixture/index.md b/docs/tests/navigation/order/mixture/index.md
deleted file mode 100644
index 24317b23..00000000
--- a/docs/tests/navigation/order/mixture/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-layout: default
-title: Mixture
-parent: Tests for order
-nav_order: 5
-has_children: true
----
-
-# Mixed Order
-
-It seems unlikely that different types of `nav_order` values are needed for the children of the same parent.
diff --git a/docs/tests/navigation/order/order.md b/docs/tests/navigation/order/order.md
deleted file mode 100644
index 2d8cebfd..00000000
--- a/docs/tests/navigation/order/order.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: default
-title: Tests for order
-has_children: true
----
-
-# Order
diff --git a/docs/tests/navigation/order/strings/10.md b/docs/tests/navigation/order/strings/10.md
deleted file mode 100644
index 6c3e480e..00000000
--- a/docs/tests/navigation/order/strings/10.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "10"
-nav_order: "10"
-parent: Strings
-grand_parent: Tests for order
----
-
-# 10
-
-```yaml
-title: "10"
-nav_order: "10"
-parent: Strings
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/strings/2.md b/docs/tests/navigation/order/strings/2.md
deleted file mode 100644
index 0c96c32a..00000000
--- a/docs/tests/navigation/order/strings/2.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: "2"
-nav_order: "2"
-parent: Strings
-grand_parent: Tests for order
----
-
-# 2
-
-```yaml
-title: "2"
-nav_order: "2"
-parent: Strings
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/strings/a.md b/docs/tests/navigation/order/strings/a.md
deleted file mode 100644
index ac1f3bd5..00000000
--- a/docs/tests/navigation/order/strings/a.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: A
-nav_order: A
-parent: Strings
-grand_parent: Tests for order
----
-
-# A
-
-```yaml
-title: A
-nav_order: A
-parent: Strings
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/strings/aa-lower.md b/docs/tests/navigation/order/strings/aa-lower.md
deleted file mode 100644
index 0cbb0b25..00000000
--- a/docs/tests/navigation/order/strings/aa-lower.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: aa
-nav_order: "aa"
-parent: Strings
-grand_parent: Tests for order
----
-
-# aa
-
-```yaml
-title: aa
-nav_order: "aa"
-parent: Strings
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/strings/aa.md b/docs/tests/navigation/order/strings/aa.md
deleted file mode 100644
index 6eaf7a24..00000000
--- a/docs/tests/navigation/order/strings/aa.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
-title: Aa
-nav_order: "Aa"
-parent: Strings
-grand_parent: Tests for order
----
-
-# Aa
-
-```yaml
-title: Aa
-nav_order: "Aa"
-parent: Strings
-grand_parent: Tests for order
-```
diff --git a/docs/tests/navigation/order/strings/index.md b/docs/tests/navigation/order/strings/index.md
deleted file mode 100644
index 404e3a86..00000000
--- a/docs/tests/navigation/order/strings/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-title: Strings
-parent: Tests for order
-nav_order: 2
-has_children: true
----
-
-# String Order
-
-By default, all Capital letters come before all lowercase letters; you can add `nav_sort: case_insensitive` in the configuration file to ignore the case).
-
-Digits precede letters, and numeric titles are ordered lexicographically: `"10"` precedes `"2"` (in contrast to explicit numeric `nav_order` values).
diff --git a/docs/tests/styling/dl.md b/docs/tests/styling/dl.md
deleted file mode 100644
index 49dc034e..00000000
--- a/docs/tests/styling/dl.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-layout: default
-title: Description lists
-parent: Styling
-grand_parent: Tests
----
-
-# Description lists
-
-The first child element of each `dd` element in a `dl` list should be aligned with the preceding `dt` element in the following examples.
-
-term
-
-: paragraph text
-
-  paragraph text
-
-term
-
-: ### Header
-
-  paragraph text
-
-term
-
-: > block quote
-
-  paragraph text
-
-term
-
-: ```sh
-  fenced code block
-  ```
-
-  paragraph text
-
-term
-
-: + unordered list item
-  + unordered list item
-
-  paragraph text
-
-term
-
-: 1. ordered list item
-  2. ordered list item
-
-  paragraph text
-
-term
-
-: sub-term
-  : sub-description
-  
-  sub-term
-  : sub-description
-
-  paragraph text
-
-term
-
-: |-----------------+------------+-----------------+----------------|
-  | Default aligned |Left aligned| Center aligned  | Right aligned  |
-  |-----------------|:-----------|:---------------:|---------------:|
-  | First body part |Second cell | Third cell      | fourth cell    |
-  | Second line     |foo         | **strong**      | baz            |
-  | Third line      |quux        | baz             | bar            |
-  |-----------------+------------+-----------------+----------------|
-  | Second body     |            |                 |                |
-  | 2 line          |            |                 |                |
-  |=================+============+=================+================|
-  | Footer row      |            |                 |                |
-  |-----------------+------------+-----------------+----------------|
-
-  paragraph text
-
-term
-
-: ***
-
-  paragraph text
diff --git a/docs/tests/styling/index.md b/docs/tests/styling/index.md
deleted file mode 100644
index 12782beb..00000000
--- a/docs/tests/styling/index.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: default
-title: Styling
-parent: Tests
-has_children: true
----
-
-# Styling
diff --git a/docs/tests/styling/ol.md b/docs/tests/styling/ol.md
deleted file mode 100644
index 6e1468d4..00000000
--- a/docs/tests/styling/ol.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-layout: default
-title: Ordered lists
-parent: Styling
-grand_parent: Tests
----
-
-# Ordered lists
-
-The first child element of each `li` element in an `ol` list should be aligned with the preceding label in the following examples.
-
-1.  paragraph text
-
-    paragraph text
-
-1.  ### Header
-
-    paragraph text
-
-1.  > block quote
-
-    paragraph text
-
-1.  ```sh
-    fenced code block
-    ```
-
-    paragraph text
-
-1.  + unordered list item
-    + unordered list item
-
-    paragraph text
-
-1.  1. ordered list item
-    2. ordered list item
-
-    paragraph text
-
-1.  term
-    : description
-  
-    term
-    : description
-
-    paragraph text
-
-1.  |-----------------+------------+-----------------+----------------|
-    | Default aligned |Left aligned| Center aligned  | Right aligned  |
-    |-----------------|:-----------|:---------------:|---------------:|
-    | First body part |Second cell | Third cell      | fourth cell    |
-    | Second line     |foo         | **strong**      | baz            |
-    | Third line      |quux        | baz             | bar            |
-    |-----------------+------------+-----------------+----------------|
-    | Second body     |            |                 |                |
-    | 2 line          |            |                 |                |
-    |=================+============+=================+================|
-    | Footer row      |            |                 |                |
-    |-----------------+------------+-----------------+----------------|
-
-    paragraph text
-
-1.  ***
-
-    paragraph text
diff --git a/docs/tests/styling/ul.md b/docs/tests/styling/ul.md
deleted file mode 100644
index 070b41a6..00000000
--- a/docs/tests/styling/ul.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-layout: default
-title: Unordered lists
-parent: Styling
-grand_parent: Tests
----
-
-# Unordered lists
-
-The first child element of each `li` element in a `ul` list should be aligned with the preceding bullet in the following examples.
-
-- paragraph text
-
-  paragraph text
-
-- ### Header
-
-  paragraph text
-
-- > block quote
-
-  paragraph text
-
-- ```sh
-  fenced code block
-  ```
-
-  paragraph text
-
-- + unordered list item
-  + unordered list item
-
-  paragraph text
-
-- 1. ordered list item
-  2. ordered list item
-
-  paragraph text
-
-- term
-  : description
-  
-  term
-  : description
-
-  paragraph text
-
-- |-----------------+------------+-----------------+----------------|
-  | Default aligned |Left aligned| Center aligned  | Right aligned  |
-  |-----------------|:-----------|:---------------:|---------------:|
-  | First body part |Second cell | Third cell      | fourth cell    |
-  | Second line     |foo         | **strong**      | baz            |
-  | Third line      |quux        | baz             | bar            |
-  |-----------------+------------+-----------------+----------------|
-  | Second body     |            |                 |                |
-  | 2 line          |            |                 |                |
-  |=================+============+=================+================|
-  | Footer row      |            |                 |                |
-  |-----------------+------------+-----------------+----------------|
-
-  paragraph text
-
-- ***
-
-  paragraph text
diff --git a/docs/ui-components/callouts.md b/docs/ui-components/callouts.md
new file mode 100644
index 00000000..0a5684b8
--- /dev/null
+++ b/docs/ui-components/callouts.md
@@ -0,0 +1,104 @@
+---
+layout: default
+title: Callouts
+parent: UI Components
+nav_order: 7
+---
+
+# Callouts
+
+Markdown does not include support for callouts. However, you can style text as a callout using a Markdown extension supported by kramdown: [*block IALs*](https://kramdown.gettalong.org/quickref.html#block-attributes). 
+
+Common kinds of callouts include `admonition`, `attention`, `caution`, `danger`, `error`, `hint`, `important`, `note`, `tip`, and `warning`.
+
+When you have [configured]({{ site.baseurl }}{% link docs/configuration.md %}#callouts) the  `color` and (optional) `title` for a callout, you can apply it to a paragraph, or to a block quote with several paragraphs, as illustrated below.[^postfix]
+
+[^postfix]:
+    You can put the callout markup either before or after its content.
+
+#### An untitled callout
+{: .no_toc }
+
+```markdown
+{: .highlight }
+A paragraph
+```
+
+#### A single paragraph callout
+{: .no_toc }
+
+```markdown
+{: .note }
+A paragraph
+```
+
+```markdown
+{: .note-title }
+> My note title
+>
+> A paragraph with a custom title callout
+```
+
+#### A multi-paragraph callout
+{: .no_toc }
+
+```markdown
+{: .important }
+> A paragraph
+>
+> Another paragraph
+>
+> The last paragraph
+```
+
+```markdown
+{: .important-title }
+> My important title
+>
+> A paragraph
+>
+> Another paragraph
+>
+> The last paragraph
+```
+
+#### An indented callout
+{: .no_toc }
+
+```markdown
+> {: .hint }
+  A paragraph
+```
+
+#### Indented multi-paragraph callouts
+{: .no_toc }
+
+```markdown
+> {: .attention }
+> > A paragraph
+> >
+> > Another paragraph
+> >
+> > The last paragraph
+```
+
+#### Nested callouts
+{: .no_toc }
+
+```markdown
+{: .important }
+> {: .warning }
+> A paragraph
+```
+
+#### Opaque background
+{: .no_toc }
+
+```markdown
+{: .important }
+> {: .opaque }
+> <div markdown="block">
+> {: .warning }
+> A paragraph
+> </div>
+```
diff --git a/just-the-docs.gemspec b/just-the-docs.gemspec
index b1ba7bc9..ae83d460 100644
--- a/just-the-docs.gemspec
+++ b/just-the-docs.gemspec
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
 
   spec.add_development_dependency "bundler", "~> 2.3.5"
   spec.add_runtime_dependency "jekyll", ">= 3.8.5"
-  spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.0"
-  spec.add_runtime_dependency "rake", ">= 12.3.1", "< 13.1.0"
+  spec.add_runtime_dependency "jekyll-seo-tag", ">= 2.0"
+  spec.add_runtime_dependency "rake", ">= 12.3.1"
 
 end
diff --git a/lib/tasks/search.rake b/lib/tasks/search.rake
index aac66bb6..55d012a9 100644
--- a/lib/tasks/search.rake
+++ b/lib/tasks/search.rake
@@ -13,7 +13,7 @@ permalink: /assets/js/search-data.json
 ---
 {
 {%- assign i = 0 -%}
-{%- assign pages_array = '' | split: '' -%}
+{%- assign pages_array = "" | split: "" -%}
 {%- assign pages_array = pages_array | push: site.html_pages -%}
 {%- if site.just_the_docs.collections -%}
   {%- for collection_entry in site.just_the_docs.collections -%}
-- 
GitLab