From 2ef7c0ec1ff976b807691fea23eaaf5ea1e93bc9 Mon Sep 17 00:00:00 2001
From: Jieiku
Date: Sun, 27 Mar 2022 19:19:28 -0700
Subject: init
---
LICENSE | 21 ++
README.md | 3 +
config.toml | 78 +++++
content/_index.md | 4 +
content/overview-abridge.md | 23 ++
content/overview-embedded-videos.md | 23 ++
content/overview-images/image.jpg | Bin 0 -> 123922 bytes
content/overview-images/index.md | 26 ++
content/overview-images/rust.png | Bin 0 -> 14303 bytes
content/overview-markdown-syntax.md | 161 +++++++++
content/overview-math.md | 91 +++++
content/overview-rich-content.md | 90 +++++
content/pages/_index.md | 3 +
content/pages/about.md | 20 ++
content/pages/contact.md | 5 +
content/pages/privacy.md | 11 +
content/posts/_index.md | 4 +
highlight_themes/Midnight.dark.tmTheme | 593 +++++++++++++++++++++++++++++++++
sass/_variables.scss | 88 +++++
sass/abridge.scss | 42 +++
sass/include/_button.scss | 41 +++
sass/include/_code.scss | 33 ++
sass/include/_document.scss | 37 ++
sass/include/_embedded.scss | 19 ++
sass/include/_form.scss | 36 ++
sass/include/_grid.scss | 14 +
sass/include/_hr.scss | 15 +
sass/include/_icons.scss | 102 ++++++
sass/include/_misc.scss | 15 +
sass/include/_nav.scss | 62 ++++
sass/include/_recent.scss | 35 ++
sass/include/_scroller.scss | 17 +
sass/include/_sectioning.scss | 87 +++++
sass/include/_table.scss | 30 ++
sass/include/_toc.scss | 44 +++
sass/include/_typography.scss | 136 ++++++++
sass/themes/_auto.scss | 100 ++++++
sass/themes/_dark.scss | 89 +++++
sass/themes/_light.scss | 89 +++++
screenshot.png | Bin 0 -> 188541 bytes
templates/404.html | 18 +
templates/base.html | 128 +++++++
templates/categories/list.html | 12 +
templates/categories/single.html | 8 +
templates/contact.html | 16 +
templates/index.html | 17 +
templates/macros/macros.html | 7 +
templates/macros/page.html | 3 +
templates/macros/social.html | 23 ++
templates/page.html | 40 +++
templates/pages.html | 2 +
templates/posts.html | 5 +
templates/robots.txt | 4 +
templates/shortcodes/audio.html | 7 +
templates/shortcodes/gif.html | 7 +
templates/shortcodes/image.html | 7 +
templates/shortcodes/img.html | 42 +++
templates/shortcodes/katex.html | 1 +
templates/shortcodes/quote.html | 6 +
templates/shortcodes/video.html | 7 +
templates/shortcodes/vm.html | 3 +
templates/shortcodes/yt.html | 3 +
templates/tags/list.html | 11 +
templates/tags/single.html | 8 +
theme.toml | 12 +
65 files changed, 2684 insertions(+)
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 config.toml
create mode 100644 content/_index.md
create mode 100644 content/overview-abridge.md
create mode 100644 content/overview-embedded-videos.md
create mode 100644 content/overview-images/image.jpg
create mode 100644 content/overview-images/index.md
create mode 100644 content/overview-images/rust.png
create mode 100644 content/overview-markdown-syntax.md
create mode 100644 content/overview-math.md
create mode 100644 content/overview-rich-content.md
create mode 100644 content/pages/_index.md
create mode 100644 content/pages/about.md
create mode 100644 content/pages/contact.md
create mode 100644 content/pages/privacy.md
create mode 100644 content/posts/_index.md
create mode 100644 highlight_themes/Midnight.dark.tmTheme
create mode 100644 sass/_variables.scss
create mode 100644 sass/abridge.scss
create mode 100644 sass/include/_button.scss
create mode 100644 sass/include/_code.scss
create mode 100644 sass/include/_document.scss
create mode 100644 sass/include/_embedded.scss
create mode 100644 sass/include/_form.scss
create mode 100644 sass/include/_grid.scss
create mode 100644 sass/include/_hr.scss
create mode 100644 sass/include/_icons.scss
create mode 100644 sass/include/_misc.scss
create mode 100644 sass/include/_nav.scss
create mode 100644 sass/include/_recent.scss
create mode 100644 sass/include/_scroller.scss
create mode 100644 sass/include/_sectioning.scss
create mode 100644 sass/include/_table.scss
create mode 100644 sass/include/_toc.scss
create mode 100644 sass/include/_typography.scss
create mode 100644 sass/themes/_auto.scss
create mode 100644 sass/themes/_dark.scss
create mode 100644 sass/themes/_light.scss
create mode 100644 screenshot.png
create mode 100644 templates/404.html
create mode 100644 templates/base.html
create mode 100644 templates/categories/list.html
create mode 100644 templates/categories/single.html
create mode 100644 templates/contact.html
create mode 100644 templates/index.html
create mode 100644 templates/macros/macros.html
create mode 100644 templates/macros/page.html
create mode 100644 templates/macros/social.html
create mode 100644 templates/page.html
create mode 100644 templates/pages.html
create mode 100644 templates/posts.html
create mode 100644 templates/robots.txt
create mode 100644 templates/shortcodes/audio.html
create mode 100644 templates/shortcodes/gif.html
create mode 100644 templates/shortcodes/image.html
create mode 100644 templates/shortcodes/img.html
create mode 100644 templates/shortcodes/katex.html
create mode 100644 templates/shortcodes/quote.html
create mode 100644 templates/shortcodes/video.html
create mode 100644 templates/shortcodes/vm.html
create mode 100644 templates/shortcodes/yt.html
create mode 100644 templates/tags/list.html
create mode 100644 templates/tags/single.html
create mode 100644 theme.toml
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..7cbaff8
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Jake G (https://github.com/Jieiku)
+
+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/README.md b/README.md
new file mode 100644
index 0000000..690e0ca
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# Abridge Zola Theme
+
+[abridge](https://github.com/jieiku/abridge) is a fast and lightweight Zola theme using semantic html, class-light [abridge.css](https://github.com/jieiku/abridge.css), and No JS.
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..f591494
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,78 @@
+base_url = "https://jieiku.github.io/abridge/"
+title = "abridge - Zola Theme"
+description = "abridge is a fast and lightweight Zola theme using semantic html, abridge.css class-light CSS, and No JS."
+default_language = "en"
+#theme = "abridge"
+
+output_dir = "public"
+compile_sass = true
+build_search_index = false
+minify_html = false
+generate_feed = true
+feed_filename = "atom.xml"
+#ignored_content = ["*.{graphml,xlsx}", "temp.*"]
+#hard_link_static = false # set to true to hard link instead of copying, useful for very large files.
+taxonomies = [
+ {name = "categories", feed = true},
+ {name = "tags", feed = true},
+]
+
+[markdown]
+extra_syntaxes_and_themes = ["highlight_themes"]
+highlight_code = true
+highlight_theme = "material-dark" # OneHalfDark, material-dark, ayu-dark, Midnight.dark
+#highlight_theme = "css" # use css classes - https://www.getzola.org/documentation/content/syntax-highlighting/#inline-vs-classed-highlighting
+render_emoji = false
+external_links_target_blank = true # rel="noopener"
+external_links_no_follow = false # rel="nofollow"
+external_links_no_referrer = false # rel="noreferrer"
+smart_punctuation = false # `...` to `…`, `"quote"` to `“curly”` etc
+
+[extra]
+katex_enable = false # used to to render mathematical notations, requires js
+recent = true
+recent_items = 9
+footer_credit = true
+#google = "Your Google Site verification code."
+#bing = "Your Bing Site verification code."
+textlogo = 'A bridge'
+sitedesc = false # This enables or disables the display of the site description below the logo.
+author = "Your Name"
+keywords = "Whatever, SEO, keywords, you want"
+banner = "banner.png"
+menu = [
+ {url = "/", name = "Home", slash = true},
+ {url = "/about/", name = "About", slash = true},
+ {url = "/posts/", name = "Posts", slash = true},
+ {url = "/categories/", name = "Categories", slash = true},
+ {url = "/tags/", name = "Tags", slash = true},
+]
+menu_footer = [
+ {url = "/", name = "Home", slash = true},
+ {url = "/about/", name = "About", slash = true},
+ {url = "/contact/", name = "Contact", slash = true},
+ {url = "/privacy/", name = "Privacy", slash = true},
+ {url = "/sitemap.xml", name = "Sitemap", slash = false},
+]
+
+# Footer social links; full options listed in macros/social.html
+[extra.social]
+mail = "name@example.com"
+mastodon = "@your-user-name"
+element = "matrix.example.com"
+#matrix = "matrix.example.com"
+twitter = "your-user-name"
+facebook = "your-user-name"
+linkedin = "your-user-name"
+
+gitlab = "your-user-name"
+github = "your-user-name"
+bitbucket = "your-user-name"
+python = "your-user-name"
+docker = "your-user-name"
+stack = "your-user-name"
+
+instagram = "your-user-name"
+pinterest = "your-user-name"
+twitch = "your-user-name"
+youtube = "your-channel-id"
diff --git a/content/_index.md b/content/_index.md
new file mode 100644
index 0000000..3511f76
--- /dev/null
+++ b/content/_index.md
@@ -0,0 +1,4 @@
++++
+paginate_by = 3
+sort_by = "date"
++++
diff --git a/content/overview-abridge.md b/content/overview-abridge.md
new file mode 100644
index 0000000..51beea6
--- /dev/null
+++ b/content/overview-abridge.md
@@ -0,0 +1,23 @@
++++
+title = "Abridge Zola theme and css framework"
+date = 2021-05-10
+
+[taxonomies]
+categories = ["Features"]
+tags = ["theme","config"]
++++
+
+For quick setup copy the config.toml from the abridge theme into the root of your zola site, this will give you a base configuration with all config values used.
+
+You can then edit or comment out the values in this file as necessary.
+
+You should also uncomment out the line #theme = "abridge" in your root zola config.toml file. This tells your root zola site to use the abridge theme in the themes folder.
+
+You can set the number of items that appear on the home page by editing `themes\abridge\content\_index.md` file and adjusting `paginate_by = 5`
+
+You can set the overal page width by editing `themes\abridge\sass\_variables.scss` file, and adjusting these two lines:
+
+```scss
+$mw:50% !default;// max-width
+$mb:1200px !default;// value at which to switch from fluid layout to using max-width
+```
diff --git a/content/overview-embedded-videos.md b/content/overview-embedded-videos.md
new file mode 100644
index 0000000..aa9074e
--- /dev/null
+++ b/content/overview-embedded-videos.md
@@ -0,0 +1,23 @@
++++
+title = "Embedded Youtube & Vimeo Videos"
+date = 2021-05-07
+
+[taxonomies]
+categories = ["Features"]
+tags = ["shortcodes","video"]
++++
+
+Zola has many shortcodes, and new are easily added, this example shows vimeo and youtube.
+
+
+## Vimeo
+
+with `vm(id="id_here")`
+
+{{ vm(id="514402648") }}
+
+## Youtube
+
+with `yt(id="the_id_here")`
+
+{{ yt(id="32gyFIWecuw") }}
diff --git a/content/overview-images/image.jpg b/content/overview-images/image.jpg
new file mode 100644
index 0000000..7b9e98d
Binary files /dev/null and b/content/overview-images/image.jpg differ
diff --git a/content/overview-images/index.md b/content/overview-images/index.md
new file mode 100644
index 0000000..0e623e5
--- /dev/null
+++ b/content/overview-images/index.md
@@ -0,0 +1,26 @@
++++
+title = "Images, Direct and Relative Path"
+date = 2021-05-08
+
+[taxonomies]
+categories = ["Features"]
+tags = ["images"]
++++
+
+Images can be embed using direct or relative paths.
+
+Use `img()` to specify the relative path of image:
+
+{{ img(path="./image.jpg", alt="") }}
+
+This is an example note with direct image, without using shortcode:
+
+
+
+This is an svg image:
+
+
+
+
diff --git a/content/overview-images/rust.png b/content/overview-images/rust.png
new file mode 100644
index 0000000..38cbc4f
Binary files /dev/null and b/content/overview-images/rust.png differ
diff --git a/content/overview-markdown-syntax.md b/content/overview-markdown-syntax.md
new file mode 100644
index 0000000..0a49a81
--- /dev/null
+++ b/content/overview-markdown-syntax.md
@@ -0,0 +1,161 @@
++++
+title = "Markdown Syntax Guide"
+description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
+date = 2021-05-09
+
+[taxonomies]
+categories = ["Features"]
+tags = ["Markdown"]
+[extra]
+toc = true
++++
+
+This article offers a sample of basic Markdown syntax that can be used in Zola content files, also it shows if basic HTML elements are decorated with CSS in a Zola theme.
+
+## Headings
+
+The following HTML `
`—`` elements represent six levels of section
+headings. `` is the highest section level while `` is the lowest.
+
+# H1
+## H2
+### H3
+#### H4
+##### H5
+###### H6
+
+## Paragraph
+
+Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum,
+voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma
+dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as
+cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin
+porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur?
+Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit
+ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda
+veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore
+eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata
+tiustia prat.
+
+Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne
+sapicia is sinveli squiatum, core et que aut hariosam ex eat.
+
+## Blockquotes
+
+The blockquote element represents content that is quoted from another source,
+optionally with a citation which must be within a `footer` or `cite` element,
+and optionally with in-line changes such as annotations and abbreviations.
+
+#### Blockquote without attribution
+
+> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
+> **Note** that you can use *Markdown syntax* within a blockquote.
+
+#### Blockquote with attribution
+
+> Don't communicate by sharing memory, share memory by communicating.
+> — Rob Pike[^1]
+
+> All men by nature desire to know.
+> ― Aristotle[^2]
+
+## Tables
+
+Tables aren't part of the core Markdown spec, but Zola supports them
+out-of-the-box.
+
+ Name | Age
+--------|------
+ Alice | 23
+ Bob | 27
+ Cody | 33
+ John | 59
+ Kerry | 23
+
+#### Inline Markdown within tables
+
+| Italics | Bold | Code | StrikeThrough |
+| -------- | -------- | ------ | ----------------- |
+| *italics* | **bold** | `code` | ~~strikethrough~~ |
+
+## Foldable Text
+
+
+ Title 1
+ IT'S A SECRET TO EVERYBODY.
+
+
+
+ Title 2
+ Stay awhile, and listen!
+
+
+## Code Blocks
+
+Code blocks.. ❤️ with automatic syntax highlighting ✨
+
+See [the docs](https://www.getzola.org/documentation/content/syntax-highlighting/) for options.
+
+#### Code block with backticks
+
+```html
+
+
+
+
+ Example HTML5 Document
+
+
+ Test
+
+
+```
+
+#### Inline Code block
+
+If we want, we can also `specify inline code` which is useful for `the small stuff`.
+
+## List Types
+
+#### Ordered List
+
+1. First item
+2. Second item
+3. Third item
+
+#### Unordered List
+
+- List item
+- Another item
+- And another item
+
+#### Nested list
+
+- Fruit
+ - Apple
+ - Orange
+ - Banana
+- Dairy
+ - Milk
+ - Cheese
+
+## Other Elements — abbr, sub, sup, kbd, mark, link
+
+GIF is a bitmap image format.
+
+H2 O
+
+Xn + Yn = Zn
+
+Press CTRL +ALT +Delete to end the
+session.
+
+Most salamanders are nocturnal, and hunt for insects, worms, and
+other small creatures.
+
+---
+
+[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c)
+during Gopherfest, November 18, 2015.
+
+[^2]: The quote is the first sentence of Aristotle's [Metaphysics](https://en.wikipedia.org/wiki/Metaphysics_(Aristotle)).
diff --git a/content/overview-math.md b/content/overview-math.md
new file mode 100644
index 0000000..df1b8b4
--- /dev/null
+++ b/content/overview-math.md
@@ -0,0 +1,91 @@
++++
+title = "Mathematical Notations Support"
+date = 2021-05-05
+updated = 2022-01-01
+[taxonomies]
+categories = ["Features"]
+tags = ["KaTeX", "Mathematics"]
+[extra]
+math = true
++++
+
+You can use [$\KaTeX$](https://katex.org) to render mathematical notations.
+
+You can enable the $\KaTeX$ support globally, per-section or per-page basis.
+
+### Enable Globally
+
+To enable the $\KaTeX$ support globally, add `math = true` under `[extra]` of the `config.toml`
+at your site root. Now every section and page of your site will load the KaTeX [autorender extension](https://katex.org/docs/autorender.html).
+
+```toml
+[extra]
+math = true
+```
+
+### Per-section Basis
+
+To enable the $\KaTeX$ support in a particular section, add `math = true` under `[extra]` in the `[SECTION_NAME]/_index.md`. Now every page under this section will load the KaTeX
+[autorender extension](https://katex.org/docs/autorender.html).
+
+```md
++++
+[extra]
+math = true
++++
+```
+
+### Per-page Basis
+
+To enable the $\KaTeX$ support in a particular page, add `math = true` under `[extra]` in the page's
+frontmatter. Now this page will load the $\KaTeX$ [autorender extension](https://katex.org/docs/autorender.html).
+
+```markdown
++++
+[extra]
+math = true
++++
+```
+
+It is a good practice to enable $\KaTeX$ support on a per-page basis, since this will only load the
+required files on that particular page, without affecting the page load speed of other pages.
+If your site is not math-heavy, please do NOT enable this feature globally or per-section basis.
+
+## Usage
+
+Wrap any [valid](https://katex.org/docs/supported.html) $\KaTeX$ syntax with `$...$` for inline
+Mathematics and `$$...$$` for block Mathematics.
+
+### Inline Mathematics
+
+This is the most beautiful equation I've ever seen:
+
+```
+$e^{i\pi}+1=0$
+```
+$e^{i\pi}+1=0$
+
+### Block Mathematics
+
+Some Mathematics in display mode is fair enough:
+
+```
+$$
+\int_0^1 x^2 dx
+$$
+```
+$$
+\int_0^1 x^2 dx
+$$
+
+### Another Example
+
+```
+$$
+f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
+$$
+```
+
+$$
+f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
+$$
diff --git a/content/overview-rich-content.md b/content/overview-rich-content.md
new file mode 100644
index 0000000..b511713
--- /dev/null
+++ b/content/overview-rich-content.md
@@ -0,0 +1,90 @@
++++
+title = "Rich Content"
+description = "A brief description of Zola Shortcodes"
+date = 2021-05-06
+
+[taxonomies]
+categories = ["Features"]
+tags = ["video", "audio", "images", "shortcodes"]
+[extra]
+toc = true
++++
+
+Several custom shortcodes are included to augment CommonMark (courtesy of d3c3nt theme), in addition to those [already provided by Zola][built-in]. `video`, `image`, `gif`, and `audio` were created to help you take advantage of modern HTML elements in your writing.
+
+
+
+## Video
+
+The `video` shortcode takes a `sources` parameter (an array of strings)
+and returns a `` tag. Each string in the `sources` array should
+be a path to a video file of a different type (`webm`, `mp4`, etc). Each
+individual source is then converted into a `` tag, and the
+element is returned.
+
+### Usage
+```rs
+{{/* video(sources=["example.webm", "example.mp4"]) */}}
+```
+### Output
+```html
+{{ video(sources=["example.webm", "example.mp4"]) }}
+```
+
+## Image
+
+The `image` shortcode returns a `` tag and accepts three
+parameters: `sources` (an array of strings), `fallback_path`, and
+`fallback_alt` (both strings).
+
+Each string in the `sources` array should be a path to an image file of
+a different type (`webp`, `png`, `jpg`, etc). `fallback_path` and
+`fallback_alt` are used to create an ` ` tag for the browser to fall
+back on if the other formats aren't yet supported.
+
+### Usage
+```rs
+{{/* image(sources=["example.webp", "example.jpg", "example.png"], fallback_path="example.png", fallback_alt="Lorem Ipsum") */}}
+```
+### Output
+```html
+{{ image(sources=["example.webp", "example.jpg", "example.png"], fallback_path="example.png", fallback_alt="Lorem Ipsum") }}
+```
+
+## GIF
+
+The `gif` shortcode is exactly the same as the [video shortcode][video]
+– it takes an array of strings called `sources` and returns a
+`` tag. The only difference is in the outermost tag, which has
+four additional properties: `autoplay`, `loop`, `muted`, `playsinline`.
+
+Using the `` tag in place of gifs allows for reduced file sizes,
+which is especially important in regions where internet is slower or
+less reliable.
+
+### Usage
+```rs
+{{/* gif(sources=["example.webm", "example.mp4"]) */}}
+```
+### Output
+```html
+{{ gif(sources=["example.webm", "example.mp4"]) }}
+```
+
+## Audio
+
+The `audio` shortcode takes a `sources` array of strings and returns an
+`` tag. Each string in the `sources` array should be a path to an
+audio file of a different type (`wav`, `ogg`, `mp3`, etc).
+
+### Usage
+```rs
+{{/* audio(sources=["example.wav", "example.ogg", "example.mp3"]) */}}
+```
+### Output
+```html
+{{ audio(sources=["example.wav", "example.ogg", "example.mp3"]) }}
+```
+
+[built-in]: https://www.getzola.org/documentation/content/shortcodes/#built-in-shortcodes
+[video]: @/overview-rich-content.md#video
diff --git a/content/pages/_index.md b/content/pages/_index.md
new file mode 100644
index 0000000..800a244
--- /dev/null
+++ b/content/pages/_index.md
@@ -0,0 +1,3 @@
++++
+render = false
++++
diff --git a/content/pages/about.md b/content/pages/about.md
new file mode 100644
index 0000000..97ed9dd
--- /dev/null
+++ b/content/pages/about.md
@@ -0,0 +1,20 @@
++++
+title = "About"
+path = "about"
+template = "pages.html"
++++
+
+This site provides a demo for the [abridge theme](https://github.com/Jieiku/abridge) for [Zola](https://www.getzola.org/) the static site generator.
+
+Abridge was created by [Jake G (jieiku)](https://github.com/Jieiku) to be fast and lightweight, using semantic html, [abridge.css](https://github.com/Jieiku/abridge-css) class-light CSS, and No JS.
+
+Some fun facts about the theme:
+
+* Perfect score on Google's Lighthouse audit
+* Only ~4 KB of CSS before enabling the SVG CSS icons.
+* No JavaScript
+* Now with SEO!
+
+Nearly half of the existing Zola MIT themes were inspiration for features and design of this theme.
+
+Both the theme and this site are licensed under the [MIT license](https://opensource.org/licenses/MIT).
diff --git a/content/pages/contact.md b/content/pages/contact.md
new file mode 100644
index 0000000..10fbd30
--- /dev/null
+++ b/content/pages/contact.md
@@ -0,0 +1,5 @@
++++
+title = "Contact"
+path = "contact"
+template = "contact.html"
++++
diff --git a/content/pages/privacy.md b/content/pages/privacy.md
new file mode 100644
index 0000000..b136056
--- /dev/null
+++ b/content/pages/privacy.md
@@ -0,0 +1,11 @@
++++
+title = "Privacy"
+path = "privacy"
+template = "pages.html"
++++
+
+We do not use cookies and we do not collect any personal data.
+
+No personal information is collected, stored in the browser, shared, sent, or sold to third-parties.
+
+Effective Date: _1st Jan 2022_
diff --git a/content/posts/_index.md b/content/posts/_index.md
new file mode 100644
index 0000000..e381261
--- /dev/null
+++ b/content/posts/_index.md
@@ -0,0 +1,4 @@
++++
+title = "posts"
+template = "posts.html"
++++
diff --git a/highlight_themes/Midnight.dark.tmTheme b/highlight_themes/Midnight.dark.tmTheme
new file mode 100644
index 0000000..ee2de14
--- /dev/null
+++ b/highlight_themes/Midnight.dark.tmTheme
@@ -0,0 +1,593 @@
+
+
+
+
+ name
+ Midnight Dark
+ semanticClass
+ base16.eighties.dark
+ colorSpaceName
+ sRGB
+ gutterSettings
+
+ background
+ #393939
+ divider
+ #393939
+ foreground
+ #747369
+ selectionBackground
+ #515151
+ selectionForeground
+ #a09f93
+
+ settings
+
+
+ settings
+
+ background
+ #1d2120
+ caret
+ #d3d0c8
+ foreground
+ #d3d0c8
+ invisibles
+ #747369
+ lineHighlight
+ #000000
+ selection
+ #000000
+ selectionBorder
+ #1A4666
+ guide
+ #797d89
+ activeGuide
+ #dfe1d7
+ stackGuide
+ #797d89
+
+
+
+ name
+ Text
+ scope
+ variable.parameter.function
+ settings
+
+ foreground
+ #d3d0c8
+
+
+
+ name
+ Comments
+ scope
+ comment, punctuation.definition.comment
+ settings
+
+ foreground
+ #747369
+
+
+
+ name
+ Punctuation
+ scope
+ punctuation.definition.string, punctuation.definition.variable, punctuation.definition.string, punctuation.definition.parameters, punctuation.definition.string, punctuation.definition.array
+ settings
+
+ foreground
+ #d3d0c8
+
+
+
+ name
+ Delimiters
+ scope
+ none
+ settings
+
+ foreground
+ #d3d0c8
+
+
+
+ name
+ Operators
+ scope
+ keyword.operator
+ settings
+
+ foreground
+ #d3d0c8
+
+
+
+ name
+ Keywords
+ scope
+ keyword
+ settings
+
+ foreground
+ #cc99cc
+
+
+
+ name
+ Variables
+ scope
+ variable
+ settings
+
+ foreground
+ #f2777a
+
+
+
+ name
+ Functions
+ scope
+ entity.name.function, meta.require, support.function.any-method
+ settings
+
+ foreground
+ #6699cc
+
+
+
+ name
+ Classes
+ scope
+ support.class, entity.name.class, entity.name.type.class
+ settings
+
+ foreground
+ #ffcc66
+
+
+
+ name
+ Classes
+ scope
+ meta.class
+ settings
+
+ foreground
+ #f2f0ec
+
+
+
+ name
+ Methods
+ scope
+ keyword.other.special-method
+ settings
+
+ foreground
+ #6699cc
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ foreground
+ #cc99cc
+
+
+
+ name
+ Support
+ scope
+ support.function
+ settings
+
+ foreground
+ #66cccc
+
+
+
+ name
+ Strings, Inherited Class
+ scope
+ string, constant.other.symbol, entity.other.inherited-class
+ settings
+
+ foreground
+ #99cc99
+
+
+
+ name
+ Integers
+ scope
+ constant.numeric
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Floats
+ scope
+ none
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Boolean
+ scope
+ none
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Constants
+ scope
+ constant
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Tags
+ scope
+ entity.name.tag
+ settings
+
+ foreground
+ #f2777a
+
+
+
+ name
+ Attributes
+ scope
+ entity.other.attribute-name
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Attribute IDs
+ scope
+ entity.other.attribute-name.id, punctuation.definition.entity
+ settings
+
+ foreground
+ #6699cc
+
+
+
+ name
+ Selector
+ scope
+ meta.selector
+ settings
+
+ foreground
+ #cc99cc
+
+
+
+ name
+ Values
+ scope
+ none
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Headings
+ scope
+ markup.heading punctuation.definition.heading, entity.name.section
+ settings
+
+ fontStyle
+
+ foreground
+ #6699cc
+
+
+
+ name
+ Units
+ scope
+ keyword.other.unit
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Bold
+ scope
+ markup.bold, punctuation.definition.bold
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #ffcc66
+
+
+
+ name
+ Italic
+ scope
+ markup.italic, punctuation.definition.italic
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #cc99cc
+
+
+
+ name
+ Code
+ scope
+ markup.raw.inline
+ settings
+
+ foreground
+ #99cc99
+
+
+
+ name
+ Link Text
+ scope
+ string.other.link
+ settings
+
+ foreground
+ #f2777a
+
+
+
+ name
+ Link Url
+ scope
+ meta.link
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Lists
+ scope
+ markup.list
+ settings
+
+ foreground
+ #f2777a
+
+
+
+ name
+ Quotes
+ scope
+ markup.quote
+ settings
+
+ foreground
+ #f99157
+
+
+
+ name
+ Separator
+ scope
+ meta.separator
+ settings
+
+ background
+ #515151
+ foreground
+ #d3d0c8
+
+
+
+ name
+ Inserted
+ scope
+ markup.inserted, markup.inserted.git_gutter
+ settings
+
+ foreground
+ #99cc99
+
+
+
+ name
+ Deleted
+ scope
+ markup.deleted, markup.deleted.git_gutter
+ settings
+
+ foreground
+ #f2777a
+
+
+
+ name
+ Changed
+ scope
+ markup.changed, markup.changed.git_gutter
+ settings
+
+ foreground
+ #cc99cc
+
+
+
+ name
+ Ignored
+ scope
+ markup.ignored, markup.ignored.git_gutter
+ settings
+
+ foreground
+ #515151
+
+
+
+ name
+ Untracked
+ scope
+ markup.untracked, markup.untracked.git_gutter
+ settings
+
+ foreground
+ #515151
+
+
+
+ name
+ Colors
+ scope
+ constant.other.color
+ settings
+
+ foreground
+ #66cccc
+
+
+
+ name
+ Regular Expressions
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #66cccc
+
+
+
+ name
+ Escape Characters
+ scope
+ constant.character.escape
+ settings
+
+ foreground
+ #66cccc
+
+
+
+ name
+ Embedded
+ scope
+ punctuation.section.embedded, variable.interpolation
+ settings
+
+ foreground
+ #d27b53
+
+
+
+ name
+ Invalid
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #f2777a
+ foreground
+ #2d2d2d
+
+
+
+ name
+ GitGutter deleted
+ scope
+ markup.deleted.git_gutter
+ settings
+
+ foreground
+ #F92672
+
+
+
+ name
+ GitGutter inserted
+ scope
+ markup.inserted.git_gutter
+ settings
+
+ foreground
+ #A6E22E
+
+
+
+ name
+ GitGutter changed
+ scope
+ markup.changed.git_gutter
+ settings
+
+ foreground
+ #967EFB
+
+
+
+ name
+ GitGutter ignored
+ scope
+ markup.ignored.git_gutter
+ settings
+
+ foreground
+ #565656
+
+
+
+ name
+ GitGutter untracked
+ scope
+ markup.untracked.git_gutter
+ settings
+
+ foreground
+ #565656
+
+
+
+ uuid
+ 36594751-36ac-443a-9f2f-111b815085cf
+
+
diff --git a/sass/_variables.scss b/sass/_variables.scss
new file mode 100644
index 0000000..72adc3e
--- /dev/null
+++ b/sass/_variables.scss
@@ -0,0 +1,88 @@
+// Config
+// ––––––––––––––––––––
+
+// Enable , , inside as a container
+$enable-semantic-container: true !default;
+
+// Enable responsive typography
+// Fixed root element size if disabled
+$enable-responsive-typography: true !default;
+
+// Enable responsive spacings for , , ,
+// Fixed spacings if disabled
+$enable-responsive-spacings: false !default;
+
+// Enable a centered viewport for , , inside
+// Fluid layout until it reaches a defined size, then becomes a centered viewport
+$enable-maxwidth: true !default;
+$mw:60% !default;// max-width
+$mb:1200px !default;// value at which to switch from fluid layout to using max-width
+
+// Enable a centered viewport for , , inside
+// This option will only work if $enable-maxwidth: false
+$enable-viewport: false !default;
+
+// xs: Extra small (portrait phones)
+// sm: Small(landscape phones)
+// md: Medium(tablets)
+// lg: Large(desktops)
+// xl: Extra large (large desktops)
+
+// Breakpoints
+$breakpoints: (
+ // 'null' disable the breakpoint
+ xs: 0,
+ sm: 576px,
+ md: 768px,
+ lg: 992px,
+ xl: 1200px
+) !default;
+
+// Viewports
+$viewports: (
+ // 'null' disable the viewport on a breakpoint
+ sm: 510px,
+ md: 700px,
+ lg: 920px,
+ xl: 1130px
+) !default;
+
+// Enable svg css icons
+$enable-icons: true !default; // setting this to false disables ALL icons, to use icons set to true.
+$ic: true !default; // icon color - set to true for colorized icons, otherwise a neutral gray #888 is used.
+// to use icons set enable-icons:true above and also enable individual icons that you need below. https://deepthought-theme.netlify.app/
+$icon-rss: true !default;
+$icon-mail: true !default;// email mail envelope
+$icon-mastodon: true !default;
+$icon-element: true !default;
+$icon-matrix: false !default;
+$icon-twitter: true !default;
+$icon-facebook: true !default;
+$icon-linkedin: true !default;
+$icon-gitlab: true !default;
+$icon-github: true !default;
+$icon-bitbucket: true !default;
+$icon-python: true !default;
+$icon-docker: true !default;
+$icon-stack: true !default;
+$icon-instagram: true !default;
+$icon-pinterest: true !default;
+$icon-twitch: true !default;
+$icon-youtube: true !default;
+
+$icon-search: false !default;
+$icon-ffolder: false !default;
+$icon-folder: false !default;// categories folder
+$icon-ftag: false !default;
+$icon-tag: false !default;// tag
+$icon-check: false !default;// check mark
+$icon-chevron: false !default;// chevron down
+$icon-clock: false !default;// time analog clock
+$icon-date: false !default;// calendar
+$icon-globe: false !default;
+$icon-home: false !default;
+$icon-minus: false !default;// minus symbol
+$icon-moon: false !default;// dark moon
+$icon-sun: false !default;// light sun
+$icon-x: false !default;// x symbol
+// add an icon link to an html template like this:
diff --git a/sass/abridge.scss b/sass/abridge.scss
new file mode 100644
index 0000000..29dc988
--- /dev/null
+++ b/sass/abridge.scss
@@ -0,0 +1,42 @@
+/*
+ * Forked from Bamboo: https://github.com/rilwis/bamboo (MIT)
+ * which was forked from new.css (MIT)
+ * Supplemented code from Pico.css: https://github.com/picocss/pico (MIT)
+ * Supplemented code from Basic.css: https://github.com/vladocar/Basic.css (MIT)
+ * Supplemented code from AttriCSS: https://github.com/raj457036/attriCSS (MIT)
+ * Feather Icons: https://github.com/feathericons/feather (MIT)
+ * Tabler Icons: https://github.com/tabler/tabler-icons/find/master (MIT)
+ *
+ * Bamboo, New, Pico: based on Normalize.css & Sanitize.css
+ * Normalize: https://github.com/necolas/normalize.css (MIT)
+ * Sanitize: https://github.com/csstools/sanitize.css (CC0 1.0 Universal)
+ */
+
+// Config
+@import "variables";
+
+// Theming - you should only import one of these themes
+@import "themes/auto";
+//@import "themes/dark";
+//@import "themes/light";
+
+// Includes - Sorted by importance/category (includes at top are needed most frequently)
+@import "include/document"; // html
+@import "include/typography"; // a, headings, p, ul, blockquote, ...
+@import "include/sectioning"; // body, header, main, footer
+@import "include/nav"; // Nav
+
+@import "include/embedded"; // iframe(youtube/vimeo), audio, canvas, img, svg, video
+@import "include/table"; // table, tr, td, ...
+@import "include/code"; // pre, code, ...
+@import "include/hr"; // hr
+
+@import "include/toc"; // Zola TOC - Table of Content Menu (recent posts & index), sticky (floats top right)
+
+//@import "include/scroller"; // figure
+//@import "include/button"; // button, a[role=button], type=button, type=submit ...
+//@import "include/form"; // input, select, textarea, label, fieldset, legend (If you import this, you should also import button)
+
+@import "include/icons"; // svg icons
+//@import "include/grid"; // section infinite grid -- test/rework this similar to hnav and milligram in that it should collapse to a single column as the page becomes narrow
+//@import "include/misc"; // template, [hidden], dialog, canvas
diff --git a/sass/include/_button.scss b/sass/include/_button.scss
new file mode 100644
index 0000000..257e8c6
--- /dev/null
+++ b/sass/include/_button.scss
@@ -0,0 +1,41 @@
+// Form elements (button)
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ padding: .5rem .75rem;
+ max-width: 100%;
+ background: var(--c2);
+ border: 0;
+ border-radius: .25rem;
+ font: inherit;
+ line-height: 1.125;
+ color: var(--f1);
+}
+button,
+[type="button" i],
+[type="submit" i],
+[type="reset" i] {
+ -webkit-appearance: button;
+ display: inline-block;
+ text-align: center;
+ white-space: nowrap;
+ background: var(--c2);
+ color: var(--f1);
+ border: 0;
+ cursor: pointer;
+ transition: opacity .25s;
+}
+button:hover,
+[type="button" i]:hover,
+[type="submit" i]:hover,
+[type="reset" i]:hover {
+ opacity: .75;
+}
+button[disabled],
+[type="button" i][disabled],
+[type="submit" i][disabled],
+[type="reset" i][disabled] {
+ opacity: .5;
+}
diff --git a/sass/include/_code.scss b/sass/include/_code.scss
new file mode 100644
index 0000000..bd72a32
--- /dev/null
+++ b/sass/include/_code.scss
@@ -0,0 +1,33 @@
+// Code
+pre,
+code,
+kbd,
+samp,
+tt,
+var {
+ border-radius: var(--br);
+ background: var(--c2);
+ font-family: var(--fm);
+ line-height: initial;
+ font-size: .8rem;
+ padding: .3rem .2rem;
+}
+pre {
+ display: block;
+ overflow-x: auto;
+ -ms-overflow-style: scrollbar;
+ white-space: pre;
+ > code {
+ display: block;
+ background: transparent;
+ }
+}
+
+// kbd
+kbd {
+ background-color: var(--f2);
+ color: var(--c1);
+ vertical-align: baseline;
+ font-size: 1rem;
+ padding: .2rem;
+}
diff --git a/sass/include/_document.scss b/sass/include/_document.scss
new file mode 100644
index 0000000..a5f91db
--- /dev/null
+++ b/sass/include/_document.scss
@@ -0,0 +1,37 @@
+// Document: Content-box & Responsive typography
+
+// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`
+*,
+*::before,
+*::after {
+ box-sizing: border-box; // 1
+}
+
+// 1. Add text decoration inheritance in all browsers (opinionated)
+// 2. Add vertical alignment inheritance in all browsers (opinionated)
+//::before,
+//::after {
+// text-decoration: inherit; // 1
+// vertical-align: inherit; // 2
+//}
+
+// 1. Correct the line height in all browsers
+// 2. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS
+// 3. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS
+// 4. Change the default tap highlight to be completely transparent in iOS
+// 5. Use the default cursor in all browsers (opinionated)
+// 6. Use a 4-space tab width in all browsers (opinionated)
+html {
+ text-rendering: optimizeLegibility;
+ background-color: var(--c1);
+ color: var(--f1);
+ font-family: var(--ff);
+ font-weight: var(--fw);
+ font-size: var(--fs);
+ line-height: var(--lh); // 1
+// -ms-text-size-adjust: 100%; // 2
+// -webkit-text-size-adjust: 100%; // 3
+// -webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 4
+// cursor: default; // 5
+// tab-size: 4; // 6
+}
diff --git a/sass/include/_embedded.scss b/sass/include/_embedded.scss
new file mode 100644
index 0000000..48282f7
--- /dev/null
+++ b/sass/include/_embedded.scss
@@ -0,0 +1,19 @@
+// Embedded content
+img,
+video,
+svg {
+ max-width: 100%;
+ height: auto;
+}
+embed,
+iframe,
+object {
+ max-width: 100%;
+}
+iframe {
+ border-style: none;
+ width: 100%;
+ height: 100%;
+ border: 0;
+ overflow: hidden;
+}
diff --git a/sass/include/_form.scss b/sass/include/_form.scss
new file mode 100644
index 0000000..5761c3f
--- /dev/null
+++ b/sass/include/_form.scss
@@ -0,0 +1,36 @@
+// Form elements (non-button)
+fieldset {
+ padding: .5rem .75rem;
+ border: var(--bw) solid var(--c3);
+ border-radius: .25rem;
+}
+legend {
+ padding: 0 .25rem;
+}
+label {
+ cursor: pointer;
+ display: block;
+ margin-bottom: .25rem;
+}
+select,
+input:not([size]):not([type="button" i]):not([type="submit" i]):not([type="reset" i]):not([type="checkbox" i]):not([type="radio" i]) {
+ width: 100%;
+}
+[type="color" i] {
+ min-height: 2.125rem;
+}
+select:not([multiple]):not([size]) {
+ padding-right: 1.5rem;
+ background-repeat: no-repeat;
+ background-position: right .5rem center;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ appearance: none;
+}
+textarea {
+ width: 100%;
+ resize: vertical;
+}
+textarea:not([rows]) {
+ height: 8rem;
+}
diff --git a/sass/include/_grid.scss b/sass/include/_grid.scss
new file mode 100644
index 0000000..1ced06b
--- /dev/null
+++ b/sass/include/_grid.scss
@@ -0,0 +1,14 @@
+/* Infinity Grid
+ * https://github.com/vladocar/Basic.css
+ */
+
+[style*="--c:"],section>section{
+color: var(--f2);
+padding: var(--s1);
+margin: var(--s1);
+text-align: center;
+}
+
+section {display: flex; flex-flow: row wrap}
+
+[style*="--c:"], section>section {flex:var(--c,1); margin:var(--s1)}
diff --git a/sass/include/_hr.scss b/sass/include/_hr.scss
new file mode 100644
index 0000000..aaa9f4e
--- /dev/null
+++ b/sass/include/_hr.scss
@@ -0,0 +1,15 @@
+/**
+ * HR
+ * https://github.com/picocss/pico
+ */
+
+// 1. Add the correct box sizing in Firefox
+// 2. Show the overflow in Edge and IE
+hr {
+ box-sizing: content-box; // 1
+ height: 0; // 1
+ overflow: visible; // 2
+ border: none;
+ border-top: 1px solid var(--f1)
+}
+header hr, footer hr {border-top: 1px solid var(--c4)}
diff --git a/sass/include/_icons.scss b/sass/include/_icons.scss
new file mode 100644
index 0000000..b98930b
--- /dev/null
+++ b/sass/include/_icons.scss
@@ -0,0 +1,102 @@
+/**
+ * SVG Icons
+ * https://github.com/feathericons/feather
+ * https://github.com/tabler/tabler-icons/find/master
+ *
+ * https://yqnn.github.io/svg-path-editor/
+ * https://jakearchibald.github.io/svgomg/
+ * https://codepen.io/yoksel/pen/MWKeKK
+ */
+
+@function icon($icon-name,$stroke,$stroke-width: 1,$fill:'none'){
+ $sc:"%23888";//stroke color
+ @if $ic {
+ $sc: $stroke
+ }
+ $p: (
+ 's': $sc,
+ 'sw': $stroke-width,
+ 'f': $fill
+ );
+ $icons: (
+ //template-fill: "%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d=''/%3E%3C/svg%3E",
+ //template-stroke: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d=''/%3E%3C/svg%3E",
+ ffolder: "%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='#{map-get($p, f)}' d='M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z'/%3E%3C/svg%3E",
+ ftag: "%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='#{map-get($p, f)}' d='M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0133.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 010 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z'/%3E%3C/svg%3E",
+ bitbucket: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='M3.648 4a.64.64 0 0 0-.64.744l3.14 14.528c.07.417.43.724.852.728h10a.644.644 0 0 0 .642-.539l3.35-14.71a.641.641 0 0 0-.64-.744L3.648 4z'/%3E%3Cpath d='M14 15h-4L9 9h6z'/%3E%3C/svg%3E",
+ check: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E",
+ chevron: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E",
+ clock: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E",
+ date: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E",
+ docker: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='M22 12.54c-1.804-.345-2.701-1.08-3.523-2.94-.487.696-1.102 1.568-.92 2.4.028.238-.32 1.002-.557 1H3c0 5.208 3.164 7 6.196 7 4.124.022 7.828-1.376 9.854-5 1.146-.101 2.296-1.505 2.95-2.46z'/%3E%3Cpath d='M5 10h3v3H5zM8 10h3v3H8zM11 10h3v3h-3zM8 7h3v3H8zM11 7h3v3h-3zM11 4h3v3h-3zM4.571 18c1.5 0 2.047-.074 2.958-.78M10 16v.01'/%3E%3C/svg%3E%0A",
+ element: "%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm-1.314 4.715c3.289 0 5.956 2.66 5.956 5.943a.879.879 0 0 1-1.758 0 4.194 4.194 0 0 0-4.198-4.189.878.878 0 1 1 0-1.754zm-5.092 9.504a.879.879 0 0 1-.879-.877 5.95 5.95 0 0 1 5.956-5.945.878.878 0 1 1 0 1.753 4.195 4.195 0 0 0-4.198 4.191.88.88 0 0 1-.879.878zm7.735 5.067c-3.29 0-5.957-2.662-5.957-5.944a.88.88 0 0 1 1.758 0 4.194 4.194 0 0 0 4.199 4.189.879.879 0 1 1 0 1.755zm0-2.683a.88.88 0 0 1-.88-.876.88.88 0 0 1 .88-.878 4.195 4.195 0 0 0 4.199-4.19.878.878 0 0 1 1.758 0c0 3.282-2.667 5.944-5.957 5.944z'/%3E%3C/svg%3E",
+ facebook: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E",
+ folder: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z'/%3E%3C/svg%3E",
+ github: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22'/%3E%3C/svg%3E",
+ gitlab: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M22.65 14.39 12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z'/%3E%3C/svg%3E",
+ globe: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z'/%3E%3C/svg%3E",
+ home: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpath d='M9 22V12h6v10'/%3E%3C/svg%3E",
+ instagram: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' rx='5' ry='5'/%3E%3Cpath d='M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37zM17.5 6.5h.01'/%3E%3C/svg%3E",
+ linkedin: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6zM2 9h4v12H2z'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3C/svg%3E",
+ mail: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'/%3E%3Cpath d='m22 6-10 7L2 6'/%3E%3C/svg%3E",
+ mastodon: "%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M1.004 7.879c0 6.197-.347 13.894 5.559 15.486 2.132.574 3.964.696 5.438.61 2.674-.15 4.175-.969 4.175-.969l-.09-1.977s-1.911.61-4.059.54c-2.127-.075-4.37-.235-4.717-2.892a5.514 5.514 0 0 1-.047-.745c4.507 1.12 8.349.488 9.408.359 2.954-.359 5.528-2.212 5.855-3.905.515-2.667.474-6.508.474-6.508 0-5.206-3.353-6.733-3.353-6.733-3.291-1.537-12.029-1.521-15.288 0-.002.002-3.355 1.528-3.355 6.734zm4.923-2.667c1.363-1.548 4.201-1.65 5.465.327l.611 1.044.611-1.044c1.269-1.987 4.112-1.864 5.465-.327 1.248 1.463.969 2.838.969 9.373h-2.455V8.469c0-2.662-3.369-2.764-3.369.369v3.348h-2.437V8.838c0-3.133-3.369-3.031-3.369-.369v6.117H4.959c0-6.54-.274-7.922.968-9.374z'/%3E%3C/svg%3E",
+ matrix: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M.632.55v22.9H3V24H0V0h3v.55zm7.043 7.26v1.157h.033C10.867 6.726 12 9 12.49 9.329 14.918 6.697 18 8 18 11v5h-1.504v-5a1 1 0 0 0-3.488.019v5h-1.69v-4.973a1 1 0 0 0-3.679-.027V16H6V7.83zm15.693 15.64V.55H21V0h3v24h-3v-.55z'/%3E%3C/svg%3E",
+ minus: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E",
+ moon: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z'/%3E%3C/svg%3E",
+ pinterest: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='m8 20 4-9m-1.3 3c.437 1.263 1.43 2 2.55 2 2.071 0 3.75-1.554 3.75-4a5 5 0 1 0-9.7 1.7'/%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E",
+ python: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='M12 9H5a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h3M12 15h7a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3'/%3E%3Cpath d='M8 9V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4M11 6v.01M13 18v.01'/%3E%3C/svg%3E",
+ rss: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1'/%3E%3C/svg%3E",
+ search: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E",
+ stack: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='M4 17v1a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-1M8 16h8M8.322 12.582l7.956.836M8.787 9.168l7.826 1.664M10.096 5.764l7.608 2.472'/%3E%3C/svg%3E",
+ sun: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3Cpath d='M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42'/%3E%3C/svg%3E",
+ tag: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='m20.59 13.41-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82zM7 7h.01'/%3E%3C/svg%3E",
+ twitch: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7'/%3E%3C/svg%3E",
+ twitter: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z'/%3E%3C/svg%3E",
+ x: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E",
+ youtube: "%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='#{map-get($p, s)}' stroke-width='#{map-get($p, sw)}' fill='#{map-get($p, f)}' viewBox='0 0 24 24'%3E%3Cpath d='M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z'/%3E%3Cpath d='m9.75 15.02 5.75-3.27-5.75-3.27v6.54z'/%3E%3C/svg%3E"
+ );
+ $icon: map-get($icons, $icon-name);
+ @return url("data:image/svg+xml,#{$icon}");
+}
+@if $enable-icons {
+ @if $icon-ffolder {.ffolder { background-image: icon(ffolder, "none", 1, "%23888") }}
+ @if $icon-ftag {.ftag { background-image: icon(ftag, "none", 1, "%23888") }}
+ @if $icon-bitbucket {.bitbucket { background-image: icon(bitbucket, "%232684ff", 2, "none") }}
+ @if $icon-check {.check { background-image: icon(check, "%23888", 2, "none") }}
+ @if $icon-chevron {.chevron { background-image: icon(chevron, "%23888", 2, "none") }}
+ @if $icon-clock {.clock { background-image: icon(clock, "%23888", 2, "none") }}
+ @if $icon-date {.date { background-image: icon(date, "%23888", 2, "none") }}
+ @if $icon-docker {.docker { background-image: icon(docker, "%232391e5", 2, "none") }}
+ @if $icon-element {.element { background-image: icon(element, "none", 1, "%230dbd8b") }}
+ @if $icon-facebook {.facebook { background-image: icon(facebook, "%23395498", 2, "none") }}
+ @if $icon-folder {.folder { background-image: icon(folder, "%23888", 2, "none") }}
+ @if $icon-github {.github { background-image: icon(github, "%23888", 2, "none") }}
+ @if $icon-gitlab {.gitlab { background-image: icon(gitlab, "%23ef6824", 2, "none") }}
+ @if $icon-globe {.globe { background-image: icon(globe, "%23888", 2, "none") }}
+ @if $icon-home {.home { background-image: icon(home, "%23888", 2, "none") }}
+ @if $icon-instagram {.instagram { background-image: icon(instagram, "%23e90077", 2, "none") }}
+ @if $icon-linkedin {.linkedin { background-image: icon(linkedin, "%232362aa", 2, "none") }}
+ @if $icon-mail {.mail { background-image: icon(mail, "%23888", 2, "none") }}
+ @if $icon-mastodon {.mastodon { background-image: icon(mastodon, "none", 1, "%232989ce") }}
+ @if $icon-matrix {.matrix { background-image: icon(matrix, "%23888", 2, "none") }}
+ @if $icon-minus {.minus { background-image: icon(minus, "%23888", 2, "none") }}
+ @if $icon-moon {.moon { background-image: icon(moon, "%23888", 2, "none") }}
+ @if $icon-pinterest {.pinterest { background-image: icon(pinterest, "%23b7081c", 2, "none") }}
+ @if $icon-python {.python { background-image: icon(python, "%23f2ca45", 2, "none") }}
+ @if $icon-rss {.rss { background-image: icon(rss, "%23eb9036", 2, "none") }}
+ @if $icon-search {.search { background-image: icon(search, "%23888", 2, "none") }}
+ @if $icon-stack {.stack { background-image: icon(stack, "%23e77923", 2, "none") }}
+ @if $icon-sun {.sun { background-image: icon(sun, "%23888", 2, "none") }}
+ @if $icon-tag {.tag { background-image: icon(tag, "%23888", 2, "none") }}
+ @if $icon-twitch {.twitch { background-image: icon(twitch, "%23a970ff", 2, "none") }}
+ @if $icon-twitter {.twitter { background-image: icon(twitter, "%232ba5da", 2, "none") }}
+ @if $icon-x {.x { background-image: icon(x, "%23888", 2, "none") }}
+ @if $icon-youtube {.youtube { background-image: icon(youtube, "%23f00", 2, "none") }}
+ .svg {
+ width: 1.5rem;
+ height: 1.5rem;
+ display: inline-block;
+ overflow: hidden;
+ vertical-align: middle
+ }
+}
diff --git a/sass/include/_misc.scss b/sass/include/_misc.scss
new file mode 100644
index 0000000..9f9c3b5
--- /dev/null
+++ b/sass/include/_misc.scss
@@ -0,0 +1,15 @@
+/**
+ * Miscs
+ * https://github.com/picocss/pico
+ */
+
+// Add the correct display in IE 10+
+[hidden],
+template {
+ display: none;
+}
+
+// Add the correct display in IE 9-
+canvas {
+ display: inline-block;
+}
diff --git a/sass/include/_nav.scss b/sass/include/_nav.scss
new file mode 100644
index 0000000..9dd4dac
--- /dev/null
+++ b/sass/include/_nav.scss
@@ -0,0 +1,62 @@
+/**
+ * Horizontal Nav
+ * https://github.com/raj457036/attriCSS
+ */
+main nav a,
+main nav a:visited {
+ font-weight: var(--fh);
+ border: .1rem solid var(--f2);
+ border-radius: var(--br);
+ padding: .3rem var(--s1);
+ margin: var(--s1);
+}
+main nav a:hover {
+ border-color: var(--a3);
+}
+nav {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ div {
+ ul {
+ line-height: 0;
+ margin-top: 0;
+ padding-bottom: var(--s1);
+ }
+ display: block;
+ margin-left: auto
+ }
+ div h2 {
+ font-size: 1rem;
+ &:hover {
+ color: var(--a3);
+ }
+ }
+ header {
+ display: inline;
+ }
+ header h1, div ul {
+ margin-bottom: 0
+ }
+ ul li {
+ display: inline-block;
+ margin: 0 0.2rem;
+ position: relative;
+ text-align: left;
+ }
+}
+
+@if map-get($breakpoints, "md") {
+ @media (max-width: map-get($breakpoints, "md")) {
+ header nav {
+ display: flex;
+ flex-direction: column;
+ header {
+ text-align: center
+ }
+ div {
+ margin: auto
+ }
+ }
+ }
+}
diff --git a/sass/include/_recent.scss b/sass/include/_recent.scss
new file mode 100644
index 0000000..88b5763
--- /dev/null
+++ b/sass/include/_recent.scss
@@ -0,0 +1,35 @@
+main {
+ .toc {
+ max-width: 260px;
+ min-width: 240px;
+ }
+ .toc-item {
+ padding: 10px 20px;
+ color: var(--f1);
+ }
+ .toc-item a, .toc-item-child a {
+ color: var(--f1);
+ &:hover {
+ cursor: pointer;
+ color: var(--a2);
+ text-decoration: underline;
+ }
+ }
+ .toc-item a.active, .toc-item-child a.active {
+ color: var(--a2);
+ }
+ .toc-item-child {
+ padding: 0 30px 5px;
+ color: var(--f1);
+ }
+}
+.toc-sticky {
+ border-radius: var(--br);
+ border-top: 5px solid var(--a1);
+ background-color: var(--c2);
+ position: sticky;
+ top: 10px;
+ padding: 10px 0 20px;
+ max-height: 100vh;
+ overflow: auto;
+}
diff --git a/sass/include/_scroller.scss b/sass/include/_scroller.scss
new file mode 100644
index 0000000..de1de5e
--- /dev/null
+++ b/sass/include/_scroller.scss
@@ -0,0 +1,17 @@
+/**
+ * Horizontal scroller ()
+ * https://github.com/picocss/pico
+ */
+
+// Wrapper to make any content responsive across all viewports
+figure {
+ display: block;
+ margin: 0;
+ padding: 0;
+ overflow-x: auto;
+
+ figcaption {
+ padding: var(--s1) 0;
+ color: var(--c4);
+ }
+}
diff --git a/sass/include/_sectioning.scss b/sass/include/_sectioning.scss
new file mode 100644
index 0000000..b433ac2
--- /dev/null
+++ b/sass/include/_sectioning.scss
@@ -0,0 +1,87 @@
+/**
+ * Sectioning: Container and responsive spacings for header, main, footer
+ * https://github.com/picocss/pico
+ */
+
+// Render the `main` element consistently in IE
+main {
+ display: flex;
+ // should always have a single div that holds all content below main.
+ // TOC or Recent Posts are the only other sections that would be directly under main.
+ article, div {
+ flex: 1 1 0;
+ min-width: 0;
+ }
+}
+
+body {
+ width: 100%;
+ margin: 0;
+
+ > header,
+ > main,
+ > footer {
+ width: 100%;
+ margin-right: auto;
+ margin-left: auto;
+
+ // Semantic container
+ @if $enable-semantic-container {
+ padding: var(--s1);
+
+ // Centered viewport max-width only
+ @if $enable-maxwidth {
+ @media (min-width: $mb) {
+ min-width: $mb;
+ max-width: $mw;
+ }
+ }
+ // Centered viewport
+ @else if $enable-viewport {
+ @if map-get($breakpoints, "sm") and $enable-viewport {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ max-width: map-get($viewports, "sm");
+ //padding-right: 0;
+ //padding-left: 0;
+ .toc {
+ display: none;
+ }
+ }
+ }
+ @if map-get($breakpoints, "md") and $enable-viewport {
+ @media (min-width: map-get($breakpoints, "md")) {
+ max-width: map-get($viewports, "md");
+ }
+ }
+ @if map-get($breakpoints, "lg") and $enable-viewport {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ max-width: map-get($viewports, "lg");
+ }
+ }
+ @if map-get($breakpoints, "xl") and $enable-viewport {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ max-width: map-get($viewports, "xl");
+ }
+ }
+ }
+ }
+ // Semantic container
+ @else {
+ padding: var(--s1) 0;
+ }
+ }
+ header, main {
+ padding-top: 0;
+ margin-top: 0;
+ padding-bottom: 0;
+ margin-bottom: 0;
+ hr {
+ margin:0.1rem 0
+ }
+ }
+ footer{
+ hr {
+ margin:0.5rem 0
+ }
+ }
+}
diff --git a/sass/include/_table.scss b/sass/include/_table.scss
new file mode 100644
index 0000000..7b9ddbf
--- /dev/null
+++ b/sass/include/_table.scss
@@ -0,0 +1,30 @@
+// Table
+table {
+ border-collapse: collapse;
+ width: 100%;
+ text-indent: 0; /* Remove text indentation from table contents in Chrome, Edge, and Safari. */
+}
+table caption {
+ margin-bottom: .5rem;
+}
+tr {
+ border-bottom: var(--bw) solid var(--c3);
+}
+td,
+th {
+ padding: var(--s1);
+}
+th {
+ text-align: left;
+}
+
+// Striped
+table {
+ tbody tr:nth-child(even) {
+ background-color: var(--c2);
+ }
+ thead tr {
+ border-top: var(--bw) solid var(--c3);
+ background-color: var(--c2);
+ }
+}
diff --git a/sass/include/_toc.scss b/sass/include/_toc.scss
new file mode 100644
index 0000000..0ee8476
--- /dev/null
+++ b/sass/include/_toc.scss
@@ -0,0 +1,44 @@
+main {
+ .toc {
+ max-width: 260px;
+ min-width: 240px;
+ margin-left: var(--s1);
+ }
+ .toc-item {
+ padding: .4rem 0;
+ color: var(--f1);
+ }
+ .toc-item a, .toc-item-child a {
+ color: var(--f1);
+ &:hover {
+ cursor: pointer;
+ color: var(--a2);
+ text-decoration: underline;
+ }
+ }
+ .toc-item a.active, .toc-item-child a.active {
+ color: var(--a2);
+ }
+ .toc-item-child {
+ padding: 0 var(--s1);
+ color: var(--f1);
+ }
+}
+.toc-sticky {
+ border-radius: var(--br);
+ border-top: 5px solid var(--a1);
+ background-color: var(--c2);
+ position: sticky;
+ top: var(--s2);
+ margin-top: var(--s2);
+ padding: 0 var(--s2) var(--s2);
+ max-height: 100vh;
+ overflow: auto;
+}
+@if map-get($breakpoints, "md") {
+ @media (max-width: map-get($breakpoints, "md")) {
+ .toc {
+ display: none;
+ }
+ }
+}
diff --git a/sass/include/_typography.scss b/sass/include/_typography.scss
new file mode 100644
index 0000000..f9f0caa
--- /dev/null
+++ b/sass/include/_typography.scss
@@ -0,0 +1,136 @@
+// Typography
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ padding-left: 0;
+ color: var(--f2);
+ margin-bottom: var(--s1);
+ margin-top: var(--s2);
+ font-weight: var(--fh);
+ font-size: var(--fs);
+}
+h1 {
+ font-size: 2rem;
+}
+h2 {
+ font-size: 1.75rem;
+}
+h3 {
+ font-size: 1.5rem;
+}
+h4 {
+ font-size: 1.25rem;
+}
+h5 {
+ font-size: 1.125rem;
+}
+header h1 {
+ margin-top: 0;
+}
+a {
+ color: var(--a1);
+ text-decoration: none;
+}
+a:hover {
+ color: var(--a2);
+ text-decoration: underline;
+}
+h1 a, h2 a, main nav a {
+ color: var(--f2);
+ text-decoration:none;
+ &:hover {
+ color: var(--a3);
+ text-decoration: none;
+ }
+}
+article {
+ padding-bottom: .2rem;
+}
+
+// Abbreviations
+// 1. Remove underline decoration in Chrome, Edge, IE, Opera, and Safari
+abbr[title] {
+ border-bottom: var(--bw) dotted;
+ text-decoration: none; // 1
+ cursor: help;
+}
+
+// Highlighted text
+mark {
+ background-color: var(--c4);
+ color: var(--c1);
+ vertical-align: baseline;
+ padding: .1rem .4rem;
+}
+blockquote {
+ margin-left: 0;
+ padding: .5rem 0 .5rem 1.5rem;
+ border-left: .25rem solid var(--c3);
+}
+blockquote > :last-child {
+ margin-bottom: 0;
+}
+small {
+ font-size: .875rem;
+}
+
+/* Prevent `sub` and `sup` elements from affecting the line height in all browsers. */
+sub,
+sup {
+ font-size: .75em;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sub {
+ bottom: -.25em;
+}
+sup {
+ top: -.5em;
+}
+
+address,
+blockquote,
+dl,
+figure,
+form,
+ol,
+p,
+pre,
+table,
+ul {
+ margin: var(--s1) 0;
+ color: var(--f1);
+ font-style: normal;
+ font-weight: var(--fw);
+ font-size: var(--fs);
+}
+
+/* Lists */
+ul,
+ol {
+ padding-right: 0;
+ padding-left: var(--s2);
+
+ li {
+ margin-bottom: var(--s1);
+ }
+}
+
+ul li {
+ list-style: square;
+}
+
+// Ins
+ins {
+ color: var(--cg);
+ text-decoration: none;
+}
+
+// del
+del {
+ color: var(--cr);
+}
diff --git a/sass/themes/_auto.scss b/sass/themes/_auto.scss
new file mode 100644
index 0000000..0997d76
--- /dev/null
+++ b/sass/themes/_auto.scss
@@ -0,0 +1,100 @@
+:root {
+ // Typography
+ --ff: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif;
+ --fm: Menlo, Consolas, "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace;
+ --lh: 1.5; //line-height
+ --fs: 1rem; //font-size
+ --fw: 400; //font-weight
+ --fh: 700; //font-weight h1-h6
+
+ // Colors
+ --f1: #555; //font color 1 bbb ccc
+ --f2: #333; //font color 2 fff eee
+
+ --c1: #fff; //color 1 111
+ --c2: #eee; //color 2 222
+ --c3: #ddd; //color 3 333
+ --c4: #777; //color 4 888
+
+ --a1: #f90; //accent color 1 link
+ --a2: #fb0; //accent color 2 hover,focus
+ --a3: #fb0; //accent color 3 h1-h2 hover,focus
+
+ --cg: #483; //ins green
+ --cr: #d33; //del red
+
+ // Spacings
+ --s1: .5rem;
+ --s2: 1rem;
+ --rc: .5rem; //radius corners
+
+ // Borders
+ --br: 0.25rem; //border radius
+ --bw: 0.0625rem; //border width
+ --ow: 0.1875rem; //outline width
+
+ // Responsive typography
+ @if $enable-responsive-typography {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --fs: 1rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --fs: 1.04rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --fs: 1.08rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --fs: 1.12rem;
+ }
+ }
+ }
+}
+@media (prefers-color-scheme: dark) {
+ :root {
+ --f1: #ccc; //font color 1
+ --f2: #ddd; //font color 2
+
+ --c1: #111; //color 1
+ --c2: #222; //color 2
+ --c3: #333; //color 3
+ --c4: #888; //color 4
+ }
+}
+
+// Responsives spacings
+@if $enable-responsive-spacings {
+ // Sectionning
+ body > header,
+ body > main,
+ body > footer,
+ section {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --s1: .5rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --s1: .6rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --s1: .7rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --s1: .8rem;
+ }
+ }
+ }
+}
diff --git a/sass/themes/_dark.scss b/sass/themes/_dark.scss
new file mode 100644
index 0000000..d05c111
--- /dev/null
+++ b/sass/themes/_dark.scss
@@ -0,0 +1,89 @@
+:root {
+ // Typography
+ --ff: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif;
+ --fm: Menlo, Consolas, "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace;
+ --lh: 1.5; //line-height
+ --fs: 1rem; //font-size
+ --fw: 400; //font-weight
+ --fh: 700; //font-weight h1-h6
+
+ // Colors
+ --f1: #ccc; //font color 1
+ --f2: #ddd; //font color 2
+
+ --c1: #111; //color 1
+ --c2: #222; //color 2
+ --c3: #333; //color 3
+ --c4: #888; //color 4
+
+ --a1: #f90; //accent color 1 link
+ --a2: #fb0; //accent color 2 hover,focus
+ --a3: #fb0; //accent color 3 h1-h2 hover,focus
+
+ --cg: #483; //ins green
+ --cr: #d33; //del red
+
+ // Spacings
+ --s1: .5rem;
+ --s2: 1rem;
+ --rc: .5rem; //radius corners
+
+ // Borders
+ --br: 0.25rem; //border radius
+ --bw: 0.0625rem; //border width
+ --ow: 0.1875rem; //outline width
+
+ // Responsive typography
+ @if $enable-responsive-typography {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --fs: 1rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --fs: 1.04rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --fs: 1.08rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --fs: 1.12rem;
+ }
+ }
+ }
+}
+
+// Responsives spacings
+@if $enable-responsive-spacings {
+ // Sectionning
+ body > header,
+ body > main,
+ body > footer,
+ section {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --s1: .5rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --s1: .6rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --s1: .7rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --s1: .8rem;
+ }
+ }
+ }
+}
diff --git a/sass/themes/_light.scss b/sass/themes/_light.scss
new file mode 100644
index 0000000..2538391
--- /dev/null
+++ b/sass/themes/_light.scss
@@ -0,0 +1,89 @@
+:root {
+ // Typography
+ --ff: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif;
+ --fm: Menlo, Consolas, "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace;
+ --lh: 1.5; //line-height
+ --fs: 1rem; //font-size
+ --fw: 400; //font-weight
+ --fh: 700; //font-weight h1-h6
+
+ // Colors
+ --f1: #555; //font color 1 bbb ccc
+ --f2: #333; //font color 2 fff eee
+
+ --c1: #fff; //color 1 111
+ --c2: #eee; //color 2 222
+ --c3: #ddd; //color 3 333
+ --c4: #777; //color 4 888
+
+ --a1: #f90; //accent color 1 link
+ --a2: #fb0; //accent color 2 hover,focus
+ --a3: #fb0; //accent color 3 h1-h2 hover,focus
+
+ --cg: #483; //ins green
+ --cr: #d33; //del red
+
+ // Spacings
+ --s1: .5rem;
+ --s2: 1rem;
+ --rc: .5rem; //radius corners
+
+ // Borders
+ --br: 0.25rem; //border radius
+ --bw: 0.0625rem; //border width
+ --ow: 0.1875rem; //outline width
+
+ // Responsive typography
+ @if $enable-responsive-typography {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --fs: 1rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --fs: 1.04rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --fs: 1.08rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --fs: 1.12rem;
+ }
+ }
+ }
+}
+
+// Responsives spacings
+@if $enable-responsive-spacings {
+ // Sectionning
+ body > header,
+ body > main,
+ body > footer,
+ section {
+ @if map-get($breakpoints, "sm") {
+ @media (min-width: map-get($breakpoints, "sm")) {
+ --s1: .5rem;
+ }
+ }
+ @if map-get($breakpoints, "md") {
+ @media (min-width: map-get($breakpoints, "md")) {
+ --s1: .6rem;
+ }
+ }
+ @if map-get($breakpoints, "lg") {
+ @media (min-width: map-get($breakpoints, "lg")) {
+ --s1: .7rem;
+ }
+ }
+ @if map-get($breakpoints, "xl") {
+ @media (min-width: map-get($breakpoints, "xl")) {
+ --s1: .8rem;
+ }
+ }
+ }
+}
diff --git a/screenshot.png b/screenshot.png
new file mode 100644
index 0000000..109c038
Binary files /dev/null and b/screenshot.png differ
diff --git a/templates/404.html b/templates/404.html
new file mode 100644
index 0000000..1857f55
--- /dev/null
+++ b/templates/404.html
@@ -0,0 +1,18 @@
+{% extends "base.html" %}
+
+{# Title #}
+{% block title %}Sorry! the page doesn't exist {% endblock title %}
+{% block current_url %}
+
+
+{% endblock current_url %}
+{# Page heading #}
+
+{% block content %}
+
+
404 Error
+
Sorry
+
The requested page does not exist or has been moved to another address.
+
Please go back to home .
+
+
{% endblock content %}
diff --git a/templates/base.html b/templates/base.html
new file mode 100644
index 0000000..83f5278
--- /dev/null
+++ b/templates/base.html
@@ -0,0 +1,128 @@
+{% import "macros/social.html" as social_macros %}
+
+
+
+
+
+
+
+ {% block title %}{% if page.title %}{{ page.title }} | {% endif %}{{ config.title }} {% endblock title %}
+
+ {% block description %}
+ {% if page.description %}
+
+
+
+ {% else %}
+
+
+
+ {% endif %}
+ {% endblock description %}
+
+ {% if page.extra.keywords %}
+
+ {% else %}
+
+ {% endif %}
+
+
+
+
+ {% if config.extra.google %} {% endif %}
+ {% if config.extra.bing %} {% endif %}
+
+
+
+
+
+
+
+
+ {% block css %} {% endblock css %}
+
+
+ {% if config.generate_feed %} {% endif %}
+ {% block ogp_head %}
+
+ {% if page.title %}
+
+
+ {% else %}
+
+
+ {% endif %}
+
+
+
+
+ {% endblock ogp_head %}
+
+ {% block current_url %}
+ {% endblock current_url %}
+
+ {% if config.extra.social.twitter %}
+
+
+ {% endif %}
+
+ {% if page.extra.thumbnail %}
+
+
+
+ {% elif page.extra.static_thumbnail %}
+ {%if page.extra.static_thumbnail is matching("^http[s]?://") %}
+
+
+
+ {% else %}
+
+
+
+ {% endif %}
+ {% elif config.extra.default_og_image %}
+
+
+
+ {% elif config.extra.banner %}
+
+
+
+ {% else %}
+
+ {% endif %}
+
+{% block extra_head %}{% endblock extra_head %}
+
+
+{% block header %}
+
+
+
+
+ {% for i in config.extra.menu %} {% endfor %}
+
+
+
+ {% if config.extra.sitedesc %}{% if config.description %}{{ config.description }}
{% endif %}{% endif %}
+
+ {% endblock header %}
+{% block content %}
+{% endblock content %}
+
+{% block footer %}
+
+
+ {{ social_macros::social_links(social_config=config.extra.social) }}
+ {# Copyright #}Copyright © 2019-{{ now() | date(format="%Y") }} {{ config.title }}
+ {% for i in config.extra.menu_footer %}{{ i.name }} {% endfor %}
+ {# Optional footer credit #}
+ {% if config.extra.footer_credit %}
+ Powered by Zola and Abridge
+ {% endif %}
+
+ {% endblock footer %}
+
+
diff --git a/templates/categories/list.html b/templates/categories/list.html
new file mode 100644
index 0000000..89bbc23
--- /dev/null
+++ b/templates/categories/list.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+
+ {{ terms | length }} Categories
+ {% for term in terms -%}[{{ term.name }} ] {%- endfor %}
+
+ {% for term in terms -%}
+ {% for page in term.pages -%}
{{ page.title }} - {{ page.date | date(format=config.extra.timeformat | default(value="%B %e, %Y")) }}
+ {% endfor -%}{% endfor -%}
+
{% endblock content %}
diff --git a/templates/categories/single.html b/templates/categories/single.html
new file mode 100644
index 0000000..d5fe5b7
--- /dev/null
+++ b/templates/categories/single.html
@@ -0,0 +1,8 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+
{{ term.name }}
+ {% for year, posts in term.pages | group_by(attribute="year") %}
{{ year }}
+ {% for page in posts %}
{{ page.title }} - {{ page.date | date(format=config.extra.timeformat | default(value="%B %e, %Y")) }}
+ {% endfor %}{% endfor %}
{% endblock content %}
diff --git a/templates/contact.html b/templates/contact.html
new file mode 100644
index 0000000..bf37d2d
--- /dev/null
+++ b/templates/contact.html
@@ -0,0 +1,16 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+
Want to get in touch? Fill out the form below to send me a message and I will get back to you as soon as possible!
+
+
{% endblock content %}
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..16eef5b
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,17 @@
+{% import "macros/page.html" as page_macros %}
+{% import "macros/macros.html" as macros %}
+{% extends "base.html" %}{% block content %}
+ {% for page in paginator.pages %}
+
+{{ macros::title(page=page) }} {{ page.summary | markdown(inline=true) | safe }} ...more
+ {% endfor %}
+
+ {% if paginator.previous %}< Previous {% endif %}{% if paginator.next %}Next > {% endif %}
+
+
{% set section_item = get_section(path="_index.md") %}
+
+
+
Recent Posts {% for page in section_item.pages | slice(end=config.extra.recent_items) %}
+{{ page_macros::page_listing(page=page) }}{% endfor %}
+
+
{% endblock content %}
diff --git a/templates/macros/macros.html b/templates/macros/macros.html
new file mode 100644
index 0000000..f0fc531
--- /dev/null
+++ b/templates/macros/macros.html
@@ -0,0 +1,7 @@
+{% macro title(page) %}
+ {{ page.date | date(format="%B %d, %Y") }}{% if page.taxonomies.categories %} [{% for cat in page.taxonomies.categories %}{{ cat }} {% endfor %}] {% endif %}
+ {% if page.taxonomies.tags %} {% for tag in page.taxonomies.tags %} #{{ tag }} {% endfor %} {% endif %}
+{% endmacro title %}
+{% macro footer(page) %}
+
+{% endmacro footer %}
diff --git a/templates/macros/page.html b/templates/macros/page.html
new file mode 100644
index 0000000..69d40f7
--- /dev/null
+++ b/templates/macros/page.html
@@ -0,0 +1,3 @@
+{% macro page_listing(page) %} {% endmacro page_listing %}
diff --git a/templates/macros/social.html b/templates/macros/social.html
new file mode 100644
index 0000000..2fbee61
--- /dev/null
+++ b/templates/macros/social.html
@@ -0,0 +1,23 @@
+{% macro social_links(social_config) %}{% set base_url = get_url(path="", lang=lang) %}
+{% if config.generate_feed %} {% endif %}
+
+{% if social_config.mail %} {% endif %}
+{% if social_config.mastodon %} {% endif %}
+{% if social_config.element %} {% endif %}
+{% if social_config.matrix %} {% endif %}
+{% if social_config.twitter %} {% endif %}
+{% if social_config.facebook %} {% endif %}
+{% if social_config.linkedin %} {% endif %}
+
+{% if social_config.gitlab %} {% endif %}
+{% if social_config.github %} {% endif %}
+{% if social_config.bitbucket %} {% endif %}
+{% if social_config.python %} {% endif %}
+{% if social_config.docker %} {% endif %}
+{% if social_config.stack %} {% endif %}
+
+{% if social_config.instagram %} {% endif %}
+{% if social_config.pinterest %} {% endif %}
+{% if social_config.twitch %} {% endif %}
+{% if social_config.youtube %} {% endif %}
+ {% endmacro %}
diff --git a/templates/page.html b/templates/page.html
new file mode 100644
index 0000000..e3388c0
--- /dev/null
+++ b/templates/page.html
@@ -0,0 +1,40 @@
+{% extends "base.html" %}
+{% import "macros/macros.html" as macros %}
+{{config.title}} - {{page.title}}
+{% block content %}
+
+ {{ macros::title(page=page) }}
+ {{ page.content | safe }}
+ {% block page_before_footer %}
+ {% endblock page_before_footer %}
+ {% block page_footer %}
+ {{ macros::footer(page=page) }}
+ {% endblock page_footer %}
+ {% block page_after_footer %}
+ {% endblock page_after_footer %}
+
+{% block toc %}
+ {% if page.extra.toc %}
+ {% set toc = page.toc %}
+ {% endif %}
+ {% if toc %}
+
+
+
Index
+ {% for h in toc %}
+
+ {% if h.children %}
+ {% for h2 in h.children %}
+
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+
+
+ {% endif %}
+{% endblock toc %}
+{% endblock content %}
diff --git a/templates/pages.html b/templates/pages.html
new file mode 100644
index 0000000..30c95e9
--- /dev/null
+++ b/templates/pages.html
@@ -0,0 +1,2 @@
+{% extends "base.html" %}{% block content %}
+{{ page.content | safe }}
{% endblock content %}
diff --git a/templates/posts.html b/templates/posts.html
new file mode 100644
index 0000000..7aee3a7
--- /dev/null
+++ b/templates/posts.html
@@ -0,0 +1,5 @@
+{% extends "base.html" %}{% block content %}{% set section_item = get_section(path="_index.md") %}
+ {% for year, posts in section_item.pages | group_by(attribute="year") %}
+
{{ year }}
+ {% for post in posts %}
{{ post.title }} - {{ post.date | date(format="%F") }}
{% endfor %}{% endfor %}
+
{% endblock content %}
diff --git a/templates/robots.txt b/templates/robots.txt
new file mode 100644
index 0000000..766e67f
--- /dev/null
+++ b/templates/robots.txt
@@ -0,0 +1,4 @@
+Sitemap: {{ get_url(path="sitemap.xml", trailing_slash=false) }}
+User-Agent: *
+Allow: /
+Host: {{ get_url(path="/", trailing_slash=false) }}
diff --git a/templates/shortcodes/audio.html b/templates/shortcodes/audio.html
new file mode 100644
index 0000000..3f9368e
--- /dev/null
+++ b/templates/shortcodes/audio.html
@@ -0,0 +1,7 @@
+
+ {% for source in sources -%}
+ {% set type = source | split(pat=".") | last -%}
+
+ {% endfor -%}
+ Your browser doesn't support the audio tag and/or the audio formats in use here – sorry!
+
diff --git a/templates/shortcodes/gif.html b/templates/shortcodes/gif.html
new file mode 100644
index 0000000..3ae56fd
--- /dev/null
+++ b/templates/shortcodes/gif.html
@@ -0,0 +1,7 @@
+
+ {% for source in sources -%}
+ {% set type = source | split(pat=".") | last -%}
+
+ {% endfor -%}
+ Your browser doesn't support the video tag, which I use in place of .gifs, and/or the video formats in use here – sorry!
+
diff --git a/templates/shortcodes/image.html b/templates/shortcodes/image.html
new file mode 100644
index 0000000..ea236ef
--- /dev/null
+++ b/templates/shortcodes/image.html
@@ -0,0 +1,7 @@
+
+ {% for source in sources -%}
+ {% set type = source | split(pat=".") | last -%}
+
+ {% endfor -%}
+
+
diff --git a/templates/shortcodes/img.html b/templates/shortcodes/img.html
new file mode 100644
index 0000000..94cb9fa
--- /dev/null
+++ b/templates/shortcodes/img.html
@@ -0,0 +1,42 @@
+{# {{ img(path="", alt="", caption="", extended_width_pct=1.3, quality=90) }} #}
+
+{# container_width = (pixel size, px) * (.container's max-width) #}
+{% set container_width = 16 * 42 %}
+
+{# figure_width = container_width - (figure margin_blocks) #}
+{% set figure_width = container_width - (40 * 2) %}
+
+{% if path is starting_with("./") %}
+ {% set relative_path = page.relative_path | split(pat="/") | slice(end=-1) | join(sep="/") %}
+ {% set img_path = path | trim_start_matches(pat="./") %}
+ {% set img_path = relative_path ~ "/" ~ img_path %}
+{% else %}
+ {% set img_path = path %}
+{% endif %}
+
+{% if path is not ending_with(".svg") %}
+ {% set resize = true %}
+ {% set image_quality = 90 %}
+ {% if quality %}
+ {% set image_quality = quality %}
+ {% endif %}
+
+ {% if extended_width_pct %}
+ {% if extended_width_pct == -1 %}
+ {# adjust extended width to container width #}
+ {% set extended_width_pct = 0.042 %}
+ {% endif %}
+ {% set _width = config.extra.images.max_width - figure_width %}
+ {% set extended_width = (extended_width_pct * _width + figure_width) | round | int %}
+ {% if extended_width > config.extra.images.max_width %}
+ {% set extended_width = config.extra.images.max_width %}
+ {% endif %}
+ {% set resized_image = resize_image(path=img_path, width=extended_width, op="fit_width", quality=image_quality) %}
+ {% else %}
+ {% set resized_image = resize_image(path=img_path, width=figure_width, op="fit_width", quality=image_quality) %}
+ {% endif %}
+{% endif %}
+
+
+ {% if caption %}{{ caption | safe }} {% endif %}
+
diff --git a/templates/shortcodes/katex.html b/templates/shortcodes/katex.html
new file mode 100644
index 0000000..cac8e97
--- /dev/null
+++ b/templates/shortcodes/katex.html
@@ -0,0 +1 @@
+
diff --git a/templates/shortcodes/quote.html b/templates/shortcodes/quote.html
new file mode 100644
index 0000000..8238b71
--- /dev/null
+++ b/templates/shortcodes/quote.html
@@ -0,0 +1,6 @@
+
+ {{body}}
+ {% if author %}
+ -- {{ author }}
+ {% endif %}
+
diff --git a/templates/shortcodes/video.html b/templates/shortcodes/video.html
new file mode 100644
index 0000000..a1a2f31
--- /dev/null
+++ b/templates/shortcodes/video.html
@@ -0,0 +1,7 @@
+
+ {% for source in sources -%}
+ {% set type = source | split(pat=".") | last -%}
+
+ {% endfor -%}
+ Your browser doesn't support the video tag and/or the video formats in use here – sorry!
+
diff --git a/templates/shortcodes/vm.html b/templates/shortcodes/vm.html
new file mode 100644
index 0000000..230e557
--- /dev/null
+++ b/templates/shortcodes/vm.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/templates/shortcodes/yt.html b/templates/shortcodes/yt.html
new file mode 100644
index 0000000..7816bd8
--- /dev/null
+++ b/templates/shortcodes/yt.html
@@ -0,0 +1,3 @@
+
+ VIDEO
+
diff --git a/templates/tags/list.html b/templates/tags/list.html
new file mode 100644
index 0000000..e7a6b7d
--- /dev/null
+++ b/templates/tags/list.html
@@ -0,0 +1,11 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+
+ {{ terms | length }} Tags
+ {% for term in terms -%}#{{ term.name }} {%- endfor %}
+
+ {% for term in terms -%}
+ {% for page in term.pages -%}
{{ page.title }} - {{ page.date | date(format=config.extra.timeformat | default(value="%B %e, %Y")) }}
+ {% endfor -%}{% endfor -%}
{% endblock content %}
diff --git a/templates/tags/single.html b/templates/tags/single.html
new file mode 100644
index 0000000..fd1a10f
--- /dev/null
+++ b/templates/tags/single.html
@@ -0,0 +1,8 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+
{{ term.name }}
+ {% for year, posts in term.pages | group_by(attribute="year") %}
{{ year }}
+ {% for page in term.pages %}
{{ page.title }} - {{ page.date | date(format=config.extra.timeformat | default(value="%B %e, %Y")) }}
+ {% endfor %}{% endfor %}
{% endblock content %}
diff --git a/theme.toml b/theme.toml
new file mode 100644
index 0000000..1f4c4e5
--- /dev/null
+++ b/theme.toml
@@ -0,0 +1,12 @@
+name = "abridge"
+description = "A fast and lightweight Zola theme using semantic html, abridge.css class-light CSS, and No JS."
+license = "MIT"
+homepage = "https://github.com/jieiku/abridge"
+min_version = "0.14.1"
+demo = "https://jieiku.github.io/abridge/"
+
+[extra]
+
+[author]
+name = "Jake G (jieiku)"
+homepage = "https://github.com/jieiku"
--
cgit v1.3.1