initial commit

This commit is contained in:
Vicky Steeves 2020-10-14 17:31:14 -04:00
commit ec24bc9910
85 changed files with 2417 additions and 0 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "themes/zen"]
path = themes/zen
url = https://github.com/frjo/hugo-theme-zen.git

6
archetypes/default.md Normal file
View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

29
archetypes/episodes.md Normal file
View File

@ -0,0 +1,29 @@
---
title: "{{ replace .TranslationBaseName "-" " " | humanize }}"
slug:
date: {{ .Date }}
keywords:
-
-
-
-
categories:
-
tags:
-
-
podcast:
mp3: https://files.lorescape.xyz/0X-.mp3
duration:
image:
src:
alt:
episode:
season: 1
---
<!--more-->
{{< audio src="https://files.lorescape.xyz/0X-.mp3">}}

87
config.yaml Normal file
View File

@ -0,0 +1,87 @@
baseurl: "https://lorescape.xyz/"
title: "Lorescape"
theme: "zen"
enableEmoji: true
languageCode: "en-US"
author:
name: "Vicky Zelda"
params:
contact: "info@lorescape.xyz"
copyright: "Original content is licensed [CC BY-NC](https://creativecommons.org/licenses/by-nc/4.0/)."
dateformat: "2006-01-02" # Set the date format, default to "2 January, 2006"
description: "" # Set site description, used in meta tags and JSON-LD
metadescription: ""
favicon: "favicon.ico" # Relative path to favicon in json feed, no leading slash.
feedlinks: true # Show feed links in the footer.
footer: ""
icon: "favicon-32x32.png" # Relative path to icon in json feed and JSON-LD, no leading slash.
image: "images/logo.png" # Relative path to site image in JSON-LD, no leading slash.
imageMaxWidth: "" # Max width for images added via figure shortcode.
jquery: true # Add jQuery
languageDir: "" # Set ltr or rtl, defaults to ltr.
logo: false # Turn off the logo.
mainSections: # The sections you want to have listed on the front page.
- "" # Default to the section with most content if not set.
- "" # Set to empty if no section should be listed.
microUsername: "" # Your micro.blog username.
mobileMenu: true # Turn on a mobile menu on small screens.
piwikSiteId: # Matamo site id
piwikTrackerUrl: "" # Matamo url, schemaless and no slash on end (example.org/matamo).
poweredby: false # Show powered by hugo in footer
realfavicongenerator: true # If full set of favicons, site manifest etc. exists, default false.
safariPinnedColor: "#9D9DEF" # Hex color value, used in meta tags, default "#000000".
searchLimit: 20 # Max number of search hits, default 20.
sidebar: false # Show a sidebar to the right
submitted: true # Show author and date information for a post.
themeColor: "#9D9DEF" # Hex color value, used in meta tags, default "#ffffff".
podcast:
title: # * Feed title, defaults to site title (iTunes).
description: # * Feed description/summary, defaults to site description (iTunes).
image: "images/logo.png" # * Feed image, place inside assets directory (iTunes).
category:
name: "Games & Hobbies" # * Feed category (iTunes).
subcategories: ["Video games"] # Feed sub category (iTunes).
explicit: false # Feed explicit settting, default to false (iTunes).
author: "Vicky Zelda" # Feed author (iTunes).
owner:
name: "Vicky Zelda" # Feed owner name (iTunes).
email: "info@lorescape.xyz" # Feed owner e-mail (iTunes).
lang: # Feed language, defaults to site language (iTunes).
block: no # Block the feed from iTunes, default to no (iTunes).
complete: no # Set the feed as complete, defaults to no (iTunes).
type: "episodic" # Podcast type, defaults to episodic (iTunes).
newfeed: # Are you moving? Set the new feed url here (iTunes).
cdn: "" # CDN url, no slash on end (https://cdn.example.org).
preload: "metadata" # Set on the HTML5 audio tag, defaults to "metadata".
menu:
main:
- Name: "Home"
Identifier: "home"
Weight: -100
URL: "/"
- Name: "Series"
Identifier: "series"
Weight: -100
URL: "/categories/"
- Name: "Crypt of the Necrodancer"
Identifier: "necrodancer"
Parent: "series"
URL: "/categories/crypt-of-the-necrodancer/"
Weight: 1
- Name: "Meta/Personal Stuff"
Identifier: "meta"
Parent: "series"
URL: "/categories/meta/"
Weight: 2
- Name: "Episodes"
Identifier: "episodes"
Weight: -90
URL: "/episodes/"
- Name: "RSS"
Identifier: "subscribe"
Weight: -80
URL: "/episodes/index.xml"

9
content/_index.md Normal file
View File

@ -0,0 +1,9 @@
---
title: "Lorescape"
---
# Welcome to the Lorescape
{{< figure src="/imgs/lorescape.png" class="mb-1" >}}
This is a podcast that goes into the lore of mostly roguelike video games.

View File

@ -0,0 +1,30 @@
---
title: "Enter the Lorescape"
slug: 00-intro
author: Vicky Zelda
date: 2020-10-12T19:26:18-04:00
keywords:
- podcast
- video games
- introduction
- lore
categories:
- Meta
tags:
- intro
- personal
podcast:
mp3: https://files.lorescape.xyz/00-intro.mp3
duration:
image:
src: /images/logo.png
alt: The Lorescape logo
episode: 0
season: 1
---
Hello world!
<!--more-->
{{< audio src="https://files.lorescape.xyz/00-intro.mp3">}}

View File

@ -0,0 +1,30 @@
---
title: "First Series: Crypt of the Necrodancer"
slug: first-series
author: Vicky Zelda
date: 2020-10-12T19:26:22-04:00
keywords:
- crypt of the necrodancer
- podcast
- video games
-
categories:
- Crypt of the Necrodancer
tags:
- general
- plot summary
podcast:
mp3: https://files.lorescape.xyz/01-necrodancer.mp3
duration:
image:
src: /images/01-necrodancer.png
alt: Logo for Crypt of the Necrodancer
episode: 1
season: 1
---
The first series we'll go over is the Crypt of the Necrodancer!
<!--more-->
{{< audio src="https://files.lorescape.xyz/01-necrodancer.mp3">}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
content/imgs/lorescape.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

0
layouts/404.html Normal file
View File

View File

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html class="nojs" lang="{{ .Site.Language.Lang }}" dir="{{ .Site.Language.LanguageDirection | default "ltr" }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>{{ block "title" . }}{{ .Title }} {{ .Site.Title }}{{ end }}</title>
{{ partial "meta.html" . }}
{{ partialCached "styles.html" . }}
{{- block "head" . }}{{ end }}
{{ partial "meta_json_ld.html" . }}
{{ partial "scripts.html" . }}
{{ partialCached "tracking.html" . }}
</head>
{{- partial "header.html" . -}}
<body class="{{ if .IsPage }}single-page{{ else }}list-page{{ end }}{{ if .IsHome }} front{{ end }}">
<div class="page layout__page{{ if $.Param "sidebar" | default true }} layout__sidebar-second{{ end }}">
<!-- <header class="header layout__header">
{{ if $.Param "logo" | default true }}<a href="{{ "/" | relLangURL }}" title="Home" rel="home" class="header__logo"><img src="{{ "/images/logo.png" | relURL }}" alt="Home" class="header__logo-image"></a>{{ end }}
<h1 class="header__site-name">
<a href="{{ "/" | relLangURL }}" title="Home" class="header__site-link" rel="home"><span>{{ .Site.Title }}</span></a>
</h1>-->
<div class="region header__region">
{{ if .Site.IsMultiLingual }}{{ partial "language-selector.html" . }}{{ end -}}
</div>
</header>
{{ partial "menu.html" . }}
{{ block "main" . }}{{ end }}
{{ if $.Param "sidebar" }}{{ partial "sidebar.html" . }}{{ end -}}
<footer class="footer layout__footer">
{{ if $.Param "feedlinks" }}{{ partial "feedlinks.html" . }}{{ end -}}
<p>{{ with $.Param "copyright" }}{{ . | markdownify }}{{ else }}<span>© {{ .Site.Title }}</span>{{ end }}</p>
{{ with $.Param "footer" }}<p>{{ . | markdownify }}</p>{{ end }}
{{ if $.Param "poweredby" }}<p>Powered by <a href="https://gohugo.io/">Hugo</a> and the <a href="https://github.com/frjo/hugo-theme-zen">Zen theme</a>.</p>{{ end }}
</footer>
</div>
{{ if $.Param "mobilemenu" }}{{ partial "mobilemenu.html" . }}{{ end -}}
</body>
</html>

View File

@ -0,0 +1,9 @@
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}full-view">
<header>
<h1 class="title {{ if $.Param "submitted" | default false }}title-submitted{{ end }}"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h1>
{{ if $.Param "submitted" | default false }}{{ partial "submitted.html" . }}{{ end -}}
</header>
<div class="content">
{{ .Content }}
</div>
</article>

1
layouts/_default/li.html Normal file
View File

@ -0,0 +1 @@
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a> <time class="created-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format ($.Param "dateformat" | default "2 January, 2006") }}</time></li>

View File

@ -0,0 +1,11 @@
{{ define "main" -}}
<main class="main layout__main">
<h1 class="title">{{ .Title }}</h1>
{{ $paginator := .Paginate (.Pages) -}}
{{ range $paginator.Pages -}}
{{ .Render "summary"}}
{{ end -}}
{{ partial "pagination.html" . }}
</main>
{{ end }}

View File

@ -0,0 +1,47 @@
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := $pctx.RegularPages -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{ $length := (len $pages) -}}
{
"version" : "https://jsonfeed.org/version/1",
"title" : "{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{ . }} {{ i18n "string_on" }} {{ end }}{{ .Site.Title }}{{ end }}",
"description": "{{ i18n "string_recent_content" }} {{ if ne .Title .Site.Title }}{{ with .Title }}{{ i18n "string_in" }} {{ . }} {{ end }}{{ end }}{{ i18n "string_on" }} {{ .Site.Title }}",
"home_page_url" : "{{ .Site.BaseURL }}",
{{ with .OutputFormats.Get "JSON" -}}
"feed_url" : "{{ .Permalink }}",
{{ end -}}
{{ with $.Param "icon" -}}
"icon" : "{{ . | absURL }}",
{{ end -}}
{{ with $.Param "favicon" -}}
"favicon" : "{{ . | absURL }}",
{{ end -}}
{{ with .Site.Author.name -}}
"author" : {
"name" : "{{ . }}"{{ with $.Site.Author.url }},
"url": "{{ . }}"{{ end }}{{ with $.Site.Author.avatar }},
"avatar": "{{ . | absURL }}"{{ end }}
},
{{ end -}}
"items" : [
{{ range $index, $element := $pages -}}
{
"title" : {{ .Title | jsonify }},
"date_published" : "{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}",
"date_modified" : "{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}",
"id" : "{{ .Permalink }}",
"url" : "{{ .Permalink }}",
{{ with .Params.author -}}
"author" : {
"name" : "{{ . }}"
},
{{ end -}}
"content_html" : {{ .Content | jsonify }}
}{{ if ne (add $index 1) $length }},{{ end }}
{{ end -}}
]
}

46
layouts/_default/rss.xml Normal file
View File

@ -0,0 +1,46 @@
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := $pctx.RegularPages -}}
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{ . }} {{ i18n "string_on" }} {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>{{ i18n "string_recent_content" }} {{ if ne .Title .Site.Title }}{{ with .Title }}{{ i18n "string_in" }} {{ . }} {{ end }}{{ end }}{{ i18n "string_on" }} {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>
{{ with .Site.LanguageCode -}}
<language>{{ . }}</language>
{{ end -}}
{{ with .Site.Author.email -}}
<managingEditor>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</managingEditor>
{{ end -}}
{{ with .Site.Author.email -}}
<webMaster>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</webMaster>
{{ end -}}
{{ with .Site.Copyright -}}
<copyright>{{ . }}</copyright>
{{ end -}}
{{ if not .Date.IsZero -}}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>
{{ end -}}
{{ with .OutputFormats.Get "RSS" -}}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end -}}
{{ range $pages }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email -}}
<author>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</author>
{{ end -}}
<guid>{{ .Permalink }}</guid>
<description>{{ .Content | html }}</description>
</item>
{{ end }}
</channel>
</rss>

View File

@ -0,0 +1,16 @@
{{ define "main" -}}
<main class="main layout__main">
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}single-view">
<header>
<h1 class="title {{ if $.Param "submitted" | default false }}title-submitted{{ end }}">{{ .Title }}</h1>
{{ if $.Param "submitted" | default false }}{{ partial "submitted.html" . }}{{ end -}}
{{ if .Params.tags }}{{ partial "tags.html" . }}{{ end -}}
</header>
<div class="content">
{{ .Content }}
{{ if ne .Lastmod .Date }}{{ partial "dates.html" . }}{{ end -}}
</div>
</article>
</main>
{{ end }}

View File

@ -0,0 +1,9 @@
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}list-view">
<header>
<h2 class="title {{ if $.Param "submitted" | default false }}title-submitted{{ end }}"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
{{ if $.Param "submitted" | default false }}{{ partial "submitted.html" . -}}{{ end }}
</header>
<div class="content">
{{ .Summary }}
</div>
</article>

View File

@ -0,0 +1,5 @@
{{- $.Scratch.Add "searchindex" slice -}}
{{- range $index, $element := .Site.RegularPages -}}
{{- $.Scratch.Add "searchindex" (dict "id" $index "title" $element.Title "permalink" $element.RelPermalink "tags" (delimit ($element.Params.tags | default "") " ") "content" $element.Plain "summary" $element.Summary "date" ($element.Date.Format ($.Param "dateformat" | default "2 January, 2006"))) -}}
{{- end -}}
{{- $.Scratch.Get "searchindex" | jsonify -}}

19
layouts/index.html Normal file
View File

@ -0,0 +1,19 @@
{{ define "title" }}{{ .Site.Title }}{{ end }}
{{ define "main" -}}
<main class="main layout__main">
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}single-view">
<div class="content">
{{ .Content }}
</div>
</article>
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
{{ $paginator := .Paginate $pages -}}
{{ range $paginator.Pages -}}
{{ .Render "summary"}}
{{ end -}}
{{ partial "pagination.html" . }}
</main>
{{ end }}

13
layouts/micro/list.html Normal file
View File

@ -0,0 +1,13 @@
{{ define "main" -}}
<main class="main layout__main">
<h1 class="title">Micro posts</h1>
<p class="micro__follow"><a href="https://micro.blog/{{ with $.Param "microusername" }}{{ . }}{{ end }}">{{ i18n "string_follow" }} @{{ with $.Param "microusername" }}{{ . }}{{ end }}</a></p>
{{ $paginator := .Paginate (.Pages) -}}
{{ range $paginator.Pages -}}
{{ .Render "summary"}}
{{ end -}}
{{ partial "pagination.html" . }}
</main>
{{ end }}

View File

@ -0,0 +1,35 @@
{{ $list := .Pages -}}
{{ $length := (len $list) -}}
{
"version" : "https://jsonfeed.org/version/1",
"title" : "Micro posts {{ i18n "string_on" }} {{ .Site.Title }}",
"description": "Micro blog {{ i18n "string_by" }} {{ with $.Site.Author.name }}{{ . }}{{end}}, {{ i18n "string_follow" }} @{{ with $.Param "microusername" }}{{ . }}{{ end }} {{ i18n "string_at" }} https://micro.blog/{{ with $.Param "microusername" }}{{ . }}{{ end }}",
"home_page_url" : "{{ .Site.BaseURL }}",
{{ with .OutputFormats.Get "JSON" -}}
"feed_url" : "{{ .Permalink }}",
{{ end -}}
{{ with $.Param "icon" -}}
"icon" : "{{ . | absURL }}",
{{ end -}}
{{ with $.Param "favicon" -}}
"favicon" : "{{ . | absURL }}",
{{ end -}}
{{ with .Site.Author.name -}}
"author" : {
"name" : "{{ . }}"{{ with $.Site.Author.url }},
"url": "{{ . }}"{{ end }}{{ with $.Site.Author.avatar }},
"avatar": "{{ . | absURL }}"{{ end }}
},
{{ end -}}
"items" : [
{{ range $index, $element := $list -}}
{
"date_published" : "{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}",
"date_modified" : "{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}",
"id" : "{{ .Permalink }}",
"url" : "{{ .Permalink }}",
"content_html" : {{ .Content | jsonify }}
}{{ if ne (add $index 1) $length }},{{ end }}
{{ end -}}
]
}

34
layouts/micro/rss.xml Normal file
View File

@ -0,0 +1,34 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Micro posts {{ i18n "string_on" }} {{ .Site.Title }}</title>
<link>{{ .Permalink }}</link>
<description>Micro blog {{ i18n "string_by" }} {{ with $.Site.Author.name }}{{ . }}{{end}}, {{ i18n "string_follow" }} @{{ with $.Param "microusername" }}{{ . }}{{ end }} {{ i18n "string_at" }} https://micro.blog/{{ with $.Param "microusername" }}{{ . }}{{ end }}</description>
<generator>Hugo -- gohugo.io</generator>
{{ with .Site.LanguageCode -}}
<language>{{ . }}</language>
{{ end -}}
{{ with .Site.Author.email -}}
<managingEditor>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</managingEditor>
{{ end -}}
{{ with .Site.Author.email -}}
<webMaster>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</webMaster>
{{ end -}}
{{ with .Site.Copyright -}}
<copyright>{{ . }}</copyright>
{{ end -}}
{{ if not .Date.IsZero -}}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>
{{ end -}}
{{ with .OutputFormats.Get "RSS" -}}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end -}}
{{ range .Pages }}
<item>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
<guid>{{ .Permalink }}</guid>
<description>{{ .Content | html }}</description>
</item>
{{ end }}
</channel>
</rss>

16
layouts/micro/single.html Normal file
View File

@ -0,0 +1,16 @@
{{ define "main" -}}
<main class="main layout__main">
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}single-view">
<header>
<h1 class="hidden">{{ .Title }}</h1>
<p>
{{ with $.Param "author" }}<span class="author">{{ . }}</span> {{ end -}}
<time class="created-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format ($.Param "dateformat" | default "2 January, 2006") }}</time>
</p>
</header>
<div class="content">
{{ .Content }}
</div>
</article>
</main>
{{ end }}

View File

@ -0,0 +1,12 @@
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}list-view">
<header>
<h2 class="hidden">{{ .Title }}</h2>
<p><a href="{{ .RelPermalink }}">
{{ with $.Param "author" }}<span class="author">{{ . }}</span> {{ end -}}
<time class="created-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format ($.Param "dateformat" | default "2 January, 2006") }}</time>
</a></p>
</header>
<div class="content">
{{ .Content }}
</div>
</article>

View File

@ -0,0 +1,4 @@
<p class="content-dates">
{{ i18n "last_mod" }} {{ .Lastmod.Format ($.Param "dateformat" | default "2 January, 2006") }}<br>
{{ i18n "created" }} {{ .Date.Format ($.Param "dateformat" | default "2 January, 2006") }}
</p>

View File

@ -0,0 +1,8 @@
{{ $list := .AlternativeOutputFormats -}}
{{ $length := (len $list) -}}
{{ if $list -}}
<p>Subscribe{{ with .Section }} to section {{ . }}{{ end }}: {{ range $index, $element := $list -}}
<a rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">{{ .Name }}</a>{{ if ne (add $index 1) $length }} | {{ end }}
{{- end -}}
</p>
{{ end -}}

View File

@ -0,0 +1,3 @@
<link rel="stylesheet" href="/css/custom.css">
<div><img src="/images/header.png" style="margin: 0 auto; display:block;"></div>

View File

@ -0,0 +1,16 @@
<h2 class="visually-hidden">{{ i18n "lang_select_title" }}</h2>
<nav class="language-selector layout__language-selector">
<ul class="navbar">
{{ if .IsTranslated -}}
{{ range .Translations }}
<li><a rel="alternate" href="{{ .RelPermalink }}" hreflang="{{ .Lang }}" lang="{{ .Lang }}">{{ .Language.LanguageName }}</a></li>
{{ end -}}
{{ else -}}
{{ range .Site.Languages -}}
{{ if ne $.Site.Language.Lang .Lang }}
<li><a rel="alternate" href="{{ .Lang | relURL }}" hreflang="{{ .Lang }}" lang="{{ .Lang }}">{{ .LanguageName }}</a></li>
{{ end -}}
{{ end -}}
{{ end -}}
</ul>
</nav>

View File

@ -0,0 +1,24 @@
<nav class="main-menu layout__navigation">
<h2 class="visually-hidden">{{ i18n "menu_title" }}</h2>
<ul class="navbar">
{{ $currentPage := . }}
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<li class="dropdown">
<a href="{{ .URL | relLangURL }}"{{ if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} class="active" aria-current="page"{{ end }}>{{ .Name }}</a>
<ul class="dropdown-content">
{{ range .Children }}
<li>
<a href="{{ .URL | relLangURL }}"{{ if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} class="active" aria-current="page"{{ end }}>{{ .Name }}</a>
</li>
{{ end }}
</ul>
</li>
{{ else }}
<li>
<a href="{{ .URL | relLangURL }}"{{ if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} class="active" aria-current="page"{{ end }}>{{ .Name }}</a>
</li>
{{ end }}
{{ end }}
</ul>
</nav>

View File

@ -0,0 +1,31 @@
{{ range .AlternativeOutputFormats -}}
<link rel="{{ .Rel }}" {{ printf "type=%q" .MediaType.Type | safeHTMLAttr }} title="{{ .Name }}" href="{{ .Permalink | safeURL }}">
{{ end -}}
<meta name="description" content="{{ with (.Description | default (replaceRE "\n" " " (.Summary | truncate 170))) }}{{ . }}{{ end }}">
<meta name="created" {{printf "content=%q" (.Date.Format "2006-01-02T15:04:05-0700") | safeHTMLAttr }}>
<meta name="modified" {{printf "content=%q" (.Lastmod.Format "2006-01-02T15:04:05-0700") | safeHTMLAttr }}>
{{ with $.Param "author" }}<meta name="author" content="{{ . }}">{{ end }}
{{ with $.Param "contact" }}<meta name="contact" content="{{ . }}">{{ end }}
<meta property="og:site_name" content="{{ .Site.Title }}">
<meta property="og:title" content="{{ .Title }}">
<meta property="og:url" content="{{ .Permalink }}">
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}">
{{ with $.Param "image" }}<meta property="og:image" content="{{ . | absURL }}">{{ end }}
{{ hugo.Generator }}
<meta name="msapplication-TileColor" content="{{ $.Param "themecolor" | default "#ffffff" }}">
<meta name="theme-color" content="{{ $.Param "themecolor" | default "#ffffff" }}">
{{ with .Site.Params.piwikTrackerUrl }}<link rel="dns-prefetch" href="https://{{ . }}">{{ end }}
{{ with $.Param "microusername" }}<link rel="me" href="https://micro.blog/{{ . }}">{{ end }}
<link rel="canonical" href="{{ .Permalink }}">
{{ if .IsTranslated -}}
{{ range .Translations }}
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .RelPermalink }}">
{{ end -}}
{{ end -}}
<link rel="apple-touch-icon" href="{{ "apple-touch-icon.png" | relURL }}">
{{ if $.Param "realfavicongenerator" -}}
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}">
<link rel="mask-icon" href="{{ "safari-pinned-tab.svg" | relURL }}" color="{{ $.Param "safaripinnedcolor" | default "#000000" }}">
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
{{ end -}}

View File

@ -0,0 +1,47 @@
<script type="application/ld+json">
{
"@context": "https://schema.org",
{{ if .IsPage -}}
"@type": {{ if or (eq .Section "blog") (eq .Section "post") }}"BlogPosting"{{ else }}"WebPage"{{ end }},
"headline": {{ .Title }},
"datePublished": {{ .Date.Format "2006-01-02T15:04:05Z07:00" }},
"dateModified": {{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }},
"url" : {{ .Permalink }},
"description": {{ with (.Description | default (replaceRE "\n" " " (.Summary | truncate 170))) }}{{ . }}{{ end }},
{{ with .Params.tags -}}
"keywords": {{ . }},
{{ end -}}
{{ else -}}
"@type": "WebPage",
"url" : {{ .Permalink }},
"name": {{ .Title }},
{{ with $.Param "description" -}}
"description": {{ . }},
{{ end -}}
{{ end -}}
{{ with $.Param "image" -}}
"image" : {{ . | absURL }},
{{ end -}}
{{ with $.Param "author" -}}
"author": {
"@type": "Person",
"name": {{ . }}
},
{{ end -}}
"mainEntityOfPage": {
"@type": "WebPage",
"@id": {{ .Site.BaseURL }}
},
"publisher": {
"@type": "Organization",
"name": {{ .Site.Title }},
{{ with $.Param "icon" -}}
"logo" : {
"@type": "ImageObject",
"url": {{ . | absURL }}
},
{{ end -}}
"url": {{ .Site.BaseURL }}
}
}
</script>

View File

@ -0,0 +1,35 @@
<div class="mobile-nav" dir="ltr">
<div class="mobile-nav__cover"></div>
<a href="#navigation" class="mobile-nav__toggle" aria-haspopup="true" role="button">{{ i18n "menu_mobile" }}</a>
<div class="mobile-nav__sheet">
<div class="mobile-nav__region">
{{ if .Site.IsMultiLingual }}{{ partial "language-selector.html" . }}{{ end }}
</div>
<nav class="mobile-nav__main-menu">
<h2 class="visually-hidden">{{ i18n "menu_title" }}</h2>
<ul class="mobile-nav__navbar">
{{ if .Site.Menus.main -}}
{{ $currentPage := . -}}
{{ range .Site.Menus.main -}}
<li><a href="{{ .URL | relLangURL }}"{{ if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} class="active" aria-current="page"{{ end }}>{{ .Name }}</a></li>
{{ end -}}
{{ else -}}
{{ $currentSection := .Section -}}
{{ $currentID := "" -}}
{{ with .File }}{{ $currentID = .UniqueID }}{{ end -}}
{{ with .Site.Home }}<li><a href="{{ .RelPermalink }}"{{ if eq $currentID .File.UniqueID }} class="active" aria-current="page"{{ end }}>{{ i18n "menu_home" }}</a></li>{{ end }}
{{ range where .Site.RegularPages "Section" "" -}}
<li><a href="{{ .RelPermalink }}"{{ if eq $currentID .File.UniqueID }} class="active" aria-current="page"{{ end }}>{{ .Title }}</a></li>
{{ end -}}
{{ range .Site.Sections -}}
<li><a href="{{ .RelPermalink }}"{{ if eq $currentSection .Section }} class="active" aria-current="page"{{ end }}>{{ .Title }}</a></li>
{{ end -}}
{{ end -}}
</ul>
</nav>
</div>
</div>

View File

@ -0,0 +1,11 @@
{{ if or (.Paginator.HasPrev) (.Paginator.HasNext) -}}
<nav class="pager">
{{ if .Paginator.HasPrev -}}
<a href="{{ .Paginator.Prev.URL }}" rel="prev" class="pager-item pager-prev">{{ i18n "pager_prev" }}</a>
{{ end -}}
{{ if .Paginator.HasNext -}}
<a href="{{ .Paginator.Next.URL }}" rel="next" class="pager-item pager-next">{{ i18n "pager_next" }}</a>
{{ end -}}
</nav>
{{ end -}}

View File

@ -0,0 +1,12 @@
{{ $src := (.Params.podcast.mp3 | absURL) -}}
{{ if .Site.Params.Podcast.cdn -}}
{{ $src = add $.Site.Params.Podcast.cdn (.Params.podcast.mp3 | relURL) -}}
{{ end -}}
<figure class="podcast">
<audio controls preload="{{ .Site.Params.Podcast.preload | default "metadata" }}"><source src="{{ $src }}" type="audio/mpeg"></audio>
<figcaption><a href="{{ $src }}">{{ .Title }}</a></figcaption>
</figure>
{{ with .Params.podcast.image }}
{{ $resource := resources.Get .src }}{{ $size := "250x" }}{{ with .width }}{{ $size = (add (string .) "x") }}{{ end }}{{ $image := $resource.Resize $size -}}
<figure class="image {{ .class | default "right" }}"><img src="{{ $image.RelPermalink }}" width="{{ .width | default "250" }}" alt="{{ .alt }}"></figure>
{{ end -}}

View File

@ -0,0 +1,24 @@
{{ $early := resources.Get "js/script-early.js" | minify | fingerprint -}}
<script src="{{ $early.RelPermalink }}"></script>
{{ if $.Param "jquery" -}}
{{ $jquery := resources.Get "js/lib/jquery.slim.min.js" | fingerprint -}}
<script defer src="{{ $jquery.RelPermalink }}"></script>
{{ end -}}
{{ $umbrella := resources.Get "js/lib/umbrella.min.js" | fingerprint -}}
<script defer src="{{ $umbrella.RelPermalink }}"></script>
{{ if $.Param "mobilemenu" -}}
{{ $mobilemenu := resources.Get "js/mobile.js" | minify | fingerprint -}}
<script defer src="{{ $mobilemenu.RelPermalink }}"></script>
{{ end -}}
{{ if .HasShortcode "contact" -}}
{{ $contact := resources.Get "js/contact.js" | minify | fingerprint -}}
<script defer src="{{ $contact.RelPermalink }}"></script>
{{ end -}}
{{ if .HasShortcode "search" -}}
{{ $flexsearch := resources.Get "js/lib/flexsearch.min.js" | fingerprint -}}
<script defer src="{{ $flexsearch.RelPermalink }}"></script>
{{ $search := resources.Get "js/search.js" | resources.ExecuteAsTemplate "js/search.js" . | minify | fingerprint -}}
<script defer src="{{ $search.RelPermalink }}"></script>
{{ end -}}
{{ $script := resources.Get "js/script.js" | minify | fingerprint -}}
<script defer src="{{ $script.RelPermalink }}"></script>

View File

@ -0,0 +1,15 @@
{{ $currentSection := .Section -}}
{{ $currentID := "" -}}
{{ with .File }}{{ $currentID = .UniqueID }}{{ end -}}
<aside class="sidebar layout__second-sidebar">
{{ range .Site.Sections -}}
<section>
<h4 class="menu"><a href="{{ .RelPermalink }}"{{ if eq $currentSection .Section }} class="active" aria-current="page"{{ end }}>{{ .Title }}</a></h4>
<ul class="menu">
{{ range .Pages -}}
<li><a href="{{ .RelPermalink }}"{{ if eq $currentID .File.UniqueID }} class="active" aria-current="page"{{ end }}>{{ .Title }}</a></li>
{{ end -}}
</ul>
</section>
{{ end -}}
</aside>

View File

@ -0,0 +1,19 @@
{{ $main_options := (dict "targetPath" "css/styles.css" "outputStyle" "compressed" "enableSourceMap" false "includePaths" (slice "assets/lib/typey/stylesheets")) -}}
{{ if eq hugo.Environment "development" -}}
{{ $main_options = merge $main_options (dict "outputStyle" "nested" "enableSourceMap" true) -}}
{{ end -}}
{{ $mobile_options := merge $main_options (dict "targetPath" "css/mobile.css") -}}
{{ $print_options := merge $main_options (dict "targetPath" "css/print.css") -}}
{{ $main_style := resources.Get "sass/styles.scss" | toCSS $main_options -}}
{{ $mobile_style := resources.Get "sass/mobile.scss" | toCSS $mobile_options -}}
{{ $print_style := resources.Get "sass/print.scss" | toCSS $print_options -}}
{{ if ne hugo.Environment "development" -}}
{{ $main_style = $main_style | fingerprint -}}
{{ $mobile_style = $mobile_style | fingerprint -}}
{{ $print_style = $print_style | fingerprint -}}
{{ end -}}
{{ if $.Param "mobilemenu" -}}
<link rel="stylesheet" href="{{ $mobile_style.RelPermalink }}" media="screen">
{{ end -}}
<link rel="stylesheet" href="{{ $main_style.RelPermalink }}">
<link rel="stylesheet" href="{{ $print_style.RelPermalink }}" media="print">

View File

@ -0,0 +1,4 @@
<div class="submitted">
{{ with $.Param "author" }}<span class="author" itemprop="author">{{ . }}</span> {{ end -}}
<time class="created-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format ($.Param "dateformat" | default "2 January, 2006") }}</time>
</div>

View File

@ -0,0 +1,8 @@
<div class="tags">
{{ i18n "taxo_tags" }}:
<ul>
{{ range .Params.tags -}}
<li><a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a></li>
{{ end -}}
</ul>
</div>

View File

@ -0,0 +1,11 @@
{{ if and .Site.Params.piwikTrackerUrl .Site.Params.piwikSiteID -}}
{{ $script := resources.Get "js/tracking.js" | resources.ExecuteAsTemplate "js/tracking.js" . | minify | fingerprint -}}
<script src="{{ $script.RelPermalink }}"></script>
<script defer src="https://{{ .Site.Params.piwikTrackerUrl }}/matomo.js"></script>
{{ end -}}
{{ if .Site.GoogleAnalytics -}}
{{ $script := resources.Get "js/tracking.js" | resources.ExecuteAsTemplate "js/tracking.js" . | minify | fingerprint -}}
<script src="{{ $script.RelPermalink }}"></script>
<script defer src="https://ssl.google-analytics.com/ga.js"></script>
{{ end -}}

10
layouts/podcast/full.html Normal file
View File

@ -0,0 +1,10 @@
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}full-view">
<header>
<h1 class="title {{ if $.Param "submitted" | default false }}title-submitted{{ end }}"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h1>
{{ if $.Param "submitted" | default false }}{{ partial "submitted.html" . }}{{ end -}}
</header>
{{ partial "podcast.html" . -}}
<div class="content">
{{ .Content }}
</div>
</article>

64
layouts/podcast/rss.xml Normal file
View File

@ -0,0 +1,64 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<channel>
<title>{{ .Site.Params.Podcast.Title | default .Site.Title }}</title>
<link>{{ .Permalink }}</link>
<description>{{ .Site.Params.Podcast.Description | default .Site.Params.Description }}</description>
<generator>Hugo -- gohugo.io</generator>
<language>{{ .Site.Params.Podcast.Lang | default .Site.LanguageCode }}</language>
{{ with .Site.Author.email -}}
<managingEditor>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</managingEditor>
{{ end -}}
{{ with .Site.Author.email -}}
<webMaster>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{end}}</webMaster>
{{ end -}}
{{ with .Site.Copyright -}}
<copyright>{{ . }}</copyright>
{{ end -}}
{{ if not .Date.IsZero -}}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>
{{ end -}}
{{ with .OutputFormats.Get "RSS" -}}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end -}}
{{ with .Site.Params.Podcast.Image }}{{ $image := resources.Get . }}<itunes:image href="{{ $image.Permalink }}" />{{ end }}
{{ with .Site.Params.Podcast.Category -}}
<itunes:category {{ if .name }}text="{{ .name }}"{{end}}>
{{ range .subcategories }}<itunes:category text="{{ . }}" />{{ end }}
</itunes:category>
{{ end -}}
{{ with .Site.Params.Podcast.Owner -}}
<itunes:owner>
{{ with .name }}<itunes:name>{{ . }}</itunes:name>{{ end }}
{{ with .email }}<itunes:email>{{ . }}</itunes:email>{{ end }}
</itunes:owner>
{{ end -}}
{{ with .Site.Params.Podcast.Description }}<itunes:summary>{{ . }}</itunes:summary>{{ end }}
{{ with .Site.Params.Podcast.Author }}<itunes:author>{{ . }}</itunes:author>{{ end }}
{{ with .Site.Params.Podcast.Type }}<itunes:type>{{ . }}</itunes:type>{{ end }}
{{ with .Site.Params.Podcast.Block }}<itunes:block>{{ . }}</itunes:block>{{ end }}
{{ with .Site.Params.Podcast.Complete }}<itunes:complete>{{ . }}</itunes:complete>{{ end }}
{{ with .Site.Params.Podcast.NewFeed }}<itunes:new-feed-url>{{ . }}</itunes:new-feed-url>{{ end }}
<itunes:explicit>{{ if .Site.Params.Podcast.Explicit }}true{{ else }}false{{ end }}</itunes:explicit>
{{ range .Pages }}
<item>
<title>{{ .Title }}</title>
<itunes:title>{{ .Title }}</itunes:title>
<link>{{ .Permalink }}</link>
<guid>{{ .Permalink }}</guid>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email -}}
<author>{{ . }}{{ with $.Site.Author.name }} ({{ . }}){{ end }}</author>
{{ end -}}
<description>{{ .Content | html }}</description>
{{ with .Params.podcast.mp3 }}{{ $file_stat := os.Stat (add "/static" (. | relURL)) }}<enclosure url="{{ if $.Site.Params.Podcast.cdn }}{{ add $.Site.Params.Podcast.cdn (. | relURL) }}{{ else }}{{ . | absURL }}{{ end }}" length="{{ $file_stat.Size }}" type="audio/mpeg" />{{ end }}
{{ with .Params.podcast.duration }}<itunes:duration>{{ . }}</itunes:duration>{{ end }}
{{ with .Params.podcast.image.src }}{{ $image := resources.Get . }}<itunes:image href="{{ $image.Permalink }}" />{{ end }}
{{ with .Params.podcast.episode }}<itunes:episode>{{ . }}</itunes:episode>{{ end }}
{{ with .Params.podcast.episodeType }}<itunes:episodeType>{{ . }}</itunes:episodeType>{{ end }}
{{ with .Params.podcast.season }}<itunes:season>{{ . }}</itunes:season>{{ end }}
{{ with .Params.podcast.block }}<itunes:block>{{ . }}</itunes:block>{{ end }}
<itunes:explicit>{{ if .Params.podcast.explicit }}true{{ else }}false{{ end }}</itunes:explicit>
</item>
{{ end }}
</channel>
</rss>

View File

@ -0,0 +1,15 @@
{{ define "main" -}}
<main class="main layout__main">
<article class="{{ with .Section }}section-{{ . | urlize }} {{ end }}single-view">
<header>
<h1 class="title {{ if $.Param "submitted" | default false }}title-submitted{{ end }}">{{ .Title }}</h1>
{{ if $.Param "submitted" | default false }}{{ partial "submitted.html" . }}{{ end -}}
{{ if .Params.tags }}{{ partial "tags.html" . }}{{ end -}}
</header>
{{ partial "podcast.html" . -}}
<div class="content">
{{ .Content }}
</div>
</article>
</main>
{{ end }}

View File

@ -0,0 +1,6 @@
<figure {{ with .Get "class" }}class="{{ . }}"{{ end }}>
<audio controls preload="{{ .Get "preload" | default "metadata" }}">
{{ with .Get "src" }}<source src="{{ . | relURL }}" type="audio/mpeg">{{ end }}
{{ with .Get "caption" }}<figcaption>{{ . }}</figcaption>{{ end }}
</audio>
</figure>

View File

@ -0,0 +1 @@
<div class="clearfix"></div>

View File

@ -0,0 +1,16 @@
<p class="error message js-hidden">{{ i18n "js_required" }}</p>
<p class="contact-submitted status message hidden">{{ i18n "contact_submitted" }}</p>
<p class="contact-error error message hidden">{{ i18n "contact_error" }}</p>
<form class="contact-form hidden" action="#" method="post" accept-charset="UTF-8">
<label for="edit-name">{{ i18n "contact_name" }}</label>
<input type="text" id="edit-name" name="name" placeholder="{{ i18n "contact_name_placeholder" }}" tabindex="1" required autofocus><span></span>
<label for="edit-mail">{{ i18n "contact_mail" }}</label>
<input type="email" id="edit-mail" name="email" placeholder="{{ i18n "contact_mail_placeholder" }}" tabindex="2" required><span></span>
<input type="text" id="edit-url" class="hidden" name="url" placeholder="{{ i18n "contact_honypot" }}">
<label for="edit-subject">{{ i18n "contact_subject" }}</label>
<input type="text" id="edit-subject" name="subject" placeholder="{{ i18n "contact_subject_placeholder" }}" tabindex="3" required><span></span>
<label for="edit-message">{{ i18n "contact_message" }}</label>
<textarea id="edit-message" name="message" rows="5" placeholder="{{ i18n "contact_message_placeholder" }}" tabindex="4" required></textarea><span></span>
<button type="submit" name="submit" class="form-submit" disabled>{{ i18n "contact_submit" }}</button>
</form>

View File

@ -0,0 +1,50 @@
{{ $maxwidth := .Site.Params.imageMaxWidth -}}
{{ $realwidth := 0 -}}
{{ $realheight := 0 -}}
{{ $width := 0 -}}
{{ $height := 0 -}}
{{ $height := 0 -}}
{{ if (fileExists (add "/static" (.Get "src"))) -}}
{{ with (imageConfig (add "/static" (.Get "src"))) -}}
{{ $realwidth = .Width -}}
{{ $realheight = .Height -}}
{{ $width = .Width -}}
{{ $height = .Height -}}
{{ end -}}
{{ end -}}
{{ if and (.Get "width") (.Get "height") -}}
{{ $width = (int (.Get "width")) -}}
{{ $height = (int (.Get "height")) -}}
{{ else if (.Get "width") -}}
{{ $width = (int (.Get "width")) -}}
{{ if and ($realwidth) (lt ($width) ($realwidth)) -}}
{{ $height = (mul ($realheight) (div (add ($width) 0.0) ($realwidth))) -}}
{{ $height = (math.Round $height) -}}
{{ end -}}
{{ else if (.Get "height") -}}
{{ $height = (int (.Get "height")) -}}
{{ if and ($realheight) (lt ($height) ($realheight)) -}}
{{ $width = (mul ($realwidth) (div (add ($height) 0.0) ($realheight))) -}}
{{ $width = (math.Round $width) -}}
{{ end -}}
{{ else if and ($maxwidth) (lt ($maxwidth) ($width)) -}}
{{ $width = ($maxwidth) -}}
{{ $height = (mul ($realheight) (div (add ($width) 0.0) ($realwidth))) -}}
{{ $height = (math.Round $height) -}}
{{ end -}}
<figure class="image {{ .Get "class" | default "" }}">
{{ with .Get "link" }}<a href="{{ . }}">{{ end -}}
<img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" }}{{ end }}"{{ end }}{{ with $width }} width="{{ . }}"{{ end }}{{ with $height }} height="{{ . }}"{{ end }}>
{{- if .Get "link" }}</a>{{ end }}
{{ if or (or (.Get "title") (.Get "caption" | markdownify)) (.Get "attr") -}}
<figcaption>{{ if isset .Params "title" }}
<h4>{{ .Get "title" }}</h4>{{ end }}
{{ if or (.Get "caption") (.Get "attr") -}}
<p>
{{- .Get "caption" -}}
{{ with .Get "attrlink" }}<a href="{{ . }}">{{ end }}{{ .Get "attr" | markdownify }}{{ if .Get "attrlink" }}</a>{{ end -}}
</p>
{{ end -}}
</figcaption>
{{ end -}}
</figure>

View File

@ -0,0 +1,22 @@
<p class="error message js-hidden">{{ i18n "js_required" }}</p>
<p class="search-loading status message hidden">{{ i18n "search_loading" }}</p>
<div class="search-input hidden">
<form id="search-form" class="search-form" action="#" method="post" accept-charset="UTF-8" role="search">
<label for="query" class="visually-hidden">{{ i18n "search_title" }}</label>
<input type="search" id="query" name="query" class="search-text" placeholder="{{ i18n "search_placeholder" }}" maxlength="128">
<button type="submit" name="submit" class="form-submit" >{{ i18n "search_title" }}</button>
</form>
</div>
<div class="search-results"></div>
<template>
<article class="search-result list-view">
<header>
<h2 class="title title-submitted"><a href="#">Title here</a></h2>
<div class="submitted"><time class="created-date">Date here</time></div>
</header>
<div class="content">Summary here</div>
</article>
</template>

View File

@ -0,0 +1,6 @@
<figure {{ with .Get "class" }}class="{{ . }}"{{ end }}>
<video controls preload="{{ .Get "preload" | default "metadata" }}" {{ with .Get "width" }}width="{{ . }}"{{ end }}>
{{ with .Get "src" }}<source src="{{ . | relURL }}" type="video/mp4">{{ end }}
</video>
{{ with .Get "caption" }}<figcaption>{{ . }}</figcaption>{{ end }}
</figure>

View File

@ -0,0 +1 @@
<div class="{{ .Get 0 }}">{{ if eq (.Get 1) "nomarkdown" }}{{ .Inner }}{{ else }}{{ .Inner | markdownify }}{{ end }}</div>

View File

@ -0,0 +1,90 @@
.main-menu,
.header__region {
display: none; }
@media (min-width: 666px) {
.main-menu,
.header__region {
display: block; } }
.mobile-nav {
font-family: Futura, "Century Gothic", AppleGothic, sans-serif;
position: absolute;
right: 0;
top: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
z-index: 20;
pointer-events: none; }
@media (min-width: 666px) {
.mobile-nav {
display: none; } }
.js-nav-open .mobile-nav {
position: fixed; }
.mobile-nav__cover {
position: absolute;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.2);
opacity: 0; }
.js-nav-open .mobile-nav__cover {
opacity: 1;
pointer-events: auto; }
.mobile-nav__toggle {
display: block;
position: absolute;
top: 10px;
right: 10px;
padding: 6px 29px 4px 4px;
z-index: 22;
text-decoration: none;
font-weight: bold;
line-height: 1;
border: 1px solid #cccccc;
border-radius: 3px;
color: #000;
pointer-events: auto; }
@media (min-width: 666px) {
.mobile-nav__toggle {
display: none; } }
.js-nav-open .mobile-nav__toggle {
color: #fff; }
.mobile-nav__toggle::after {
position: absolute;
content: '';
margin-left: 5px;
width: 20px;
height: 20px;
border-top: 12px double #000;
border-bottom: 4px solid #000; }
.js-nav-open .mobile-nav__toggle::after {
border-color: #fff; }
.mobile-nav__sheet {
background-color: #333333;
width: 90vw;
height: 100vh;
padding: 2rem;
transform: translateX(100vw);
z-index: 21; }
.mobile-nav__sheet a {
color: #fff;
text-decoration: none; }
.mobile-nav__sheet a:hover, .mobile-nav__sheet a:focus {
color: #fff; }
.js-nav-open .mobile-nav__sheet {
pointer-events: auto;
box-shadow: -10px 0 10px -10px #333333;
transform: translateX(10vw); }
.mobile-nav__navbar {
display: flex;
flex-direction: column;
padding: 0;
margin: 0; }
.mobile-nav__navbar li {
list-style-type: none;
margin: .4rem 0; }
.mobile-nav__cover, .mobile-nav__toggle, .mobile-nav__toggle::after, .mobile-nav__sheet {
transition: all 130ms ease-in; }
.js-nav-open .mobile-nav__cover, .js-nav-open .mobile-nav__toggle, .js-nav-open .mobile-nav__toggle::after, .js-nav-open .mobile-nav__sheet {
transition: all 330ms ease-out; }
/*# sourceMappingURL=mobile.css.map */

View File

@ -0,0 +1 @@
{"Target":"css/mobile.css","MediaType":"text/css","Data":{}}

View File

@ -0,0 +1,23 @@
@media print {
.print-none,
.pager,
aside,
nav,
footer {
display: none; } }
@media print {
html {
font-size: 12pt; }
body,
.page {
background-color: #fff; }
.main {
width: 100%; }
:link,
:visited {
text-decoration: underline; }
abbr[title]::after {
content: " (" attr(title) ")"; } }
/*# sourceMappingURL=print.css.map */

View File

@ -0,0 +1 @@
{"Target":"css/print.css","MediaType":"text/css","Data":{}}

View File

@ -0,0 +1,856 @@
html {
font-family: "Garamond Premier Pro", Charter, "Times New Roman", serif;
font-size: 137.5%;
line-height: 1.40909091em;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
min-height: 100%;
box-sizing: border-box; }
@media (min-width: 1111px) {
html {
font-size: 112.5%;
line-height: 1.38888889em; } }
*,
*::before,
*::after {
box-sizing: inherit; }
body {
margin: 0;
padding: 0; }
h1,
.header__site-name {
font-size: 1.27272727rem;
line-height: 2.11363636rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h2 {
font-size: 1.18181818rem;
line-height: 2.11363636rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h3 {
font-size: 1.09090909rem;
line-height: 2.11363636rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h4 {
font-size: 1rem;
line-height: 1.40909091rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h5 {
font-size: 0.81818182rem;
line-height: 1.40909091rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h6 {
font-size: 0.72727273rem;
line-height: 1.40909091rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
@media (min-width: 666px) {
h1,
.header__site-name {
font-size: 1.88888889rem;
line-height: 2.81818182rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h2 {
font-size: 1.55555556rem;
line-height: 2.11363636rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h3 {
font-size: 1.22222222rem;
line-height: 2.11363636rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h4 {
font-size: 1rem;
line-height: 1.40909091rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h5 {
font-size: 0.88888889rem;
line-height: 1.40909091rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; }
h6 {
font-size: 0.77777778rem;
line-height: 1.40909091rem;
margin-top: 1.40909091rem;
margin-bottom: 1.40909091rem; } }
.divider,
hr {
margin: 1.40909091rem 0;
border: 0;
border-top: 1px solid #cccccc; }
.divider > :first-child,
hr > :first-child {
margin-top: 1.40909091rem; }
blockquote {
margin: 1.40909091rem 2rem; }
dl,
ol,
ul {
margin: 1.40909091rem 0; }
dd {
margin: 0 0 0 44px; }
ol,
ul {
padding: 0 0 0 44px; }
ol ol,
ol ul,
ul ol,
ul ul {
margin: 0; }
figure {
margin: 1.40909091rem 0; }
hr {
box-sizing: content-box;
height: 0;
overflow: visible; }
p,
pre {
margin: 1.05681818rem 0; }
code,
kbd,
samp, pre {
font-family: Menlo, "Ubuntu Mono", "DejaVu Sans Mono", "Courier New", Courier, monospace, sans-serif;
font-size: 1em; }
a {
color: #000;
-webkit-text-decoration-skip: objects; }
:visited {
color: #000; }
a:hover,
a:focus {
color: #333333; }
a:active {
color: #c00; }
abbr[title] {
border-bottom: 0;
text-decoration: underline;
text-decoration: underline dotted; }
b,
strong {
font-weight: inherit; }
b,
strong {
font-weight: bolder; }
small {
font-size: 0.81818182rem; }
sub,
sup {
font-size: 0.72727273rem;
line-height: 0;
position: relative;
vertical-align: baseline; }
sub {
bottom: -.25em; }
sup {
top: -.5em; }
img,
svg {
max-width: 100%;
height: auto; }
button,
input,
optgroup,
select,
textarea {
font-family: "Garamond Premier Pro", Charter, "Times New Roman", serif;
line-height: 1.40909091rem;
font-size: 100%;
box-sizing: border-box;
max-width: 100%;
margin: 0; }
button {
overflow: visible; }
button,
select {
text-transform: none; }
input {
overflow: visible; }
[type='number']::-webkit-inner-spin-button,
[type='number']::-webkit-outer-spin-button {
height: auto; }
[type='search'] {
-webkit-appearance: textfield;
outline-offset: -2px; }
[type='search']::-webkit-search-cancel-button, [type='search']::-webkit-search-decoration {
-webkit-appearance: none; }
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit; }
.button,
button,
[type='button'],
[type='reset'],
[type='submit'] {
font-family: Futura, "Century Gothic", AppleGothic, sans-serif;
margin-right: 1.05681818rem;
margin-bottom: 1.05681818rem;
display: inline-block;
padding: 2px 10px;
line-height: inherit;
text-decoration: none;
cursor: pointer;
color: #333333;
text-align: center;
background-image: linear-gradient(#f6f6f6, #e2e2e2);
border: 1px solid #e4e4e4;
border-left-color: #d2d2d2;
border-right-color: #d2d2d2;
border-bottom-color: #b4b4b4;
border-radius: 2px;
-moz-appearance: button;
-webkit-appearance: button; }
.button::-moz-focus-inner,
button::-moz-focus-inner,
[type='button']::-moz-focus-inner,
[type='reset']::-moz-focus-inner,
[type='submit']::-moz-focus-inner {
border-style: none;
padding: 0; }
.button:-moz-focusring,
button:-moz-focusring,
[type='button']:-moz-focusring,
[type='reset']:-moz-focusring,
[type='submit']:-moz-focusring {
outline: 1px dotted ButtonText; }
.button:hover, .button:focus, .button:active,
button:hover,
button:focus,
button:active,
[type='button']:hover,
[type='button']:focus,
[type='button']:active,
[type='reset']:hover,
[type='reset']:focus,
[type='reset']:active,
[type='submit']:hover,
[type='submit']:focus,
[type='submit']:active {
text-decoration: none;
color: #333333; }
.button:active,
button:active,
[type='button']:active,
[type='reset']:active,
[type='submit']:active {
border-color: #555;
text-shadow: #333333 0 -1px 0;
background: #666666;
color: #fff; }
[disabled].button,
button[disabled],
[disabled][type='button'],
[disabled][type='reset'],
[disabled][type='submit'] {
cursor: default;
color: #999999;
background-color: #eeeeee;
border-color: #eeeeee;
background-image: none;
text-shadow: none; }
[disabled].button:hover,
button[disabled]:hover,
[disabled][type='button']:hover,
[disabled][type='reset']:hover,
[disabled][type='submit']:hover, [disabled].button:focus,
button[disabled]:focus,
[disabled][type='button']:focus,
[disabled][type='reset']:focus,
[disabled][type='submit']:focus, [disabled].button:active,
button[disabled]:active,
[disabled][type='button']:active,
[disabled][type='reset']:active,
[disabled][type='submit']:active {
color: #999999; }
[type='checkbox'],
[type='radio'] {
box-sizing: border-box;
padding: 0; }
fieldset {
padding: 0.49318182rem 0.70454545rem 0.91590909rem;
border: 1px solid #cccccc; }
legend {
box-sizing: border-box;
display: table;
max-width: 100%;
margin-left: -5px;
padding: 0 5px;
color: inherit;
white-space: normal; }
label {
display: block;
font-weight: bold; }
progress {
vertical-align: baseline; }
textarea {
overflow: auto; }
table {
margin: 1.40909091rem 0;
border-collapse: collapse;
border-spacing: 0;
width: 100%; }
td,
th {
padding: 0; }
details {
display: block; }
summary {
display: list-item; }
menu {
margin: 1.40909091rem 0;
padding: 0 0 0 44px; }
menu menu, ol menu, ul menu {
margin: 0; }
.layout__page {
max-width: 960px; }
@media (min-width: 666px) {
.layout__page {
margin: 0 auto;
min-height: 100vh; } }
.layout__header, .layout__footer, .layout__main, .layout__navigation, .layout__first-sidebar, .layout__second-sidebar, .layout__page-top, .layout__page-bottom {
padding: 0 10px;
min-width: 0; }
@media (min-width: 666px) {
.layout__header, .layout__footer, .layout__main, .layout__navigation, .layout__first-sidebar, .layout__second-sidebar, .layout__page-top, .layout__page-bottom {
padding: 0 20px; } }
@supports (display: grid) {
.layout__page {
display: grid;
grid-template-areas: 'head' 'nav' 'top' 'main' 'side1' 'side2' 'bottom' 'foot';
grid-template-rows: auto auto auto 1fr auto auto auto auto;
grid-template-columns: 1fr; }
@media (min-width: 999px) {
.layout__page {
grid-template-rows: auto auto auto 1fr auto auto; }
.layout__sidebar-first {
grid-template-areas: 'head head' 'nav nav' 'side1 top' 'side1 main' 'side1 bottom' 'foot foot';
grid-template-columns: 1fr 2fr; }
.layout__sidebar-second {
grid-template-areas: 'head head' 'nav nav' 'top side2' 'main side2' 'bottom side2' 'foot foot';
grid-template-columns: 2fr 1fr; }
.layout__sidebar-two {
grid-template-areas: 'head head head' 'nav nav nav' 'side1 top side2' 'side1 main side2' 'side1 bottom side2' 'foot foot foot';
grid-template-columns: 1fr 2fr 1fr; } }
.layout__header {
grid-area: head; }
.layout__navigation {
grid-area: nav; }
.layout__page-top {
grid-area: top; }
.layout__main {
grid-area: main; }
.layout__first-sidebar {
grid-area: side1; }
.layout__second-sidebar {
grid-area: side2; }
.layout__page-bottom {
grid-area: bottom; }
.layout__footer {
grid-area: foot; } }
.box {
margin-bottom: 1.40909091rem;
border: 5px solid #cccccc;
padding: 1em; }
.box__title {
margin: 0; }
.box:focus, .box:hover, .box.is-focus, .box--is-focus {
border-color: #000; }
.box--highlight {
border-color: #000; }
.clearfix::before {
content: '';
display: table; }
.clearfix::after {
content: '';
display: table;
clear: both; }
@media (min-width: 666px) {
.header {
display: flex; } }
.header__logo {
margin: 0 20px 0 0; }
.header__logo-image {
vertical-align: bottom; }
.header__site-name {
margin: 0;
display: inline-block; }
.header__site-link:link, .header__site-link:visited {
color: #000;
text-decoration: none; }
.header__site-link:hover, .header__site-link:focus {
text-decoration: underline; }
@media (min-width: 666px) {
.header__region {
margin-left: auto; } }
.hidden,
html.nojs .nojs-hidden,
html.js .js-hidden {
display: none; }
.highlight-mark {
color: #c00;
background-color: transparent; }
.inline-links {
padding: 0; }
.inline-links__item {
display: inline;
list-style-type: none;
padding: 0 1em 0 0; }
.inline-sibling {
display: inline;
margin-right: 10px; }
.inline-sibling__child,
.inline-sibling * {
display: inline; }
.inline-sibling__adjacent,
.inline-sibling + *,
.inline-sibling + * > :first-child,
.inline-sibling + * > :first-child > :first-child {
display: inline; }
.inverted-box {
padding: 0.70454545rem;
background: #333333;
color: #fff;
border-radius: 5px; }
.inverted-box :link,
.inverted-box :visited {
color: #fff; }
.inverted-box p:first-of-type,
.inverted-box ul:first-of-type,
.inverted-box ol:first-of-type {
margin-top: 0; }
.inverted-box p:last-of-type,
.inverted-box ul:last-of-type,
.inverted-box ol:last-of-type {
margin-bottom: 0; }
.language-selector .navbar::before {
content: '';
background-image: url("../images/language-icon.png");
background-size: 24px;
background-repeat: no-repeat;
height: 24px;
width: 24px;
margin-right: 8px; }
article > .content ul,
aside ul {
display: table;
list-style: none;
padding: 0; }
article > .content ul > li,
aside ul > li {
display: table-row; }
article > .content ul > li::before,
aside ul > li::before {
font-size: 0.81818182rem;
padding-right: 0.70454545rem;
display: table-cell;
content: '\2022'; }
@media (min-width: 1111px) {
article > .content ul > li::before,
aside ul > li::before {
font-size: 0.88888889rem; } }
article > .content ol,
aside ol {
display: table;
list-style: none;
padding: 0; }
article > .content ol > li,
aside ol > li {
display: table-row;
counter-increment: table-ol; }
article > .content ol > li::before,
aside ol > li::before {
font-size: 0.81818182rem;
padding-right: 0.70454545rem;
display: table-cell;
content: counter(table-ol) ".";
text-align: right; }
@media (min-width: 1111px) {
article > .content ol > li::before,
aside ol > li::before {
font-size: 0.88888889rem; } }
.message {
padding: 10px;
border-width: 1px;
border-style: solid;
width: 95%; }
.message.status {
background-color: #f4feee;
color: #43a808;
border-color: #43a808; }
.message.warning {
background-color: #fffce6;
color: #000;
border-color: #000; }
.message.error {
background-color: #fff0f0;
color: #c00;
border-color: #c00; }
.responsive-video {
position: relative;
padding-bottom: 56.25%;
padding-top: 25px;
height: 0; }
.responsive-video__embed,
.responsive-video iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%; }
.responsive-video--4-3 {
padding-bottom: 75%; }
.visually-hidden {
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
word-wrap: normal; }
.visually-hidden--off,
.visually-hidden--focusable:active,
.visually-hidden--focusable:focus {
position: static !important;
clip: auto;
height: auto;
width: auto;
overflow: visible; }
.watermark {
font-family: Impact, "Arial Narrow", Helvetica, sans-serif;
font-weight: bold;
text-transform: uppercase;
display: block;
height: 0;
overflow: visible;
background-color: transparent;
color: #eeeeee;
font-size: 75px;
line-height: 1;
text-align: center;
text-shadow: 0 0 1px rgba(0, 0, 0, 0.1);
word-wrap: break-word; }
.more-link {
text-align: right; }
.more-link__help-icon {
padding: 1px 0 1px 20px;
background-image: url(../sass/navigation/more-link/more-link__help-icon.svg);
background-position: 0 50%;
background-repeat: no-repeat; }
.navbar {
display: flex;
flex-wrap: wrap;
margin: 0;
padding: 0;
text-align: left; }
.navbar__item,
.navbar li {
padding: 0 10px 0 0;
list-style-type: none;
list-style-image: none; }
.pager {
margin-top: 0.70454545rem;
margin-bottom: 0.70454545rem;
clear: both;
padding: 0;
text-align: center; }
.pager__item,
.pager-item,
.pager-first,
.pager-previous,
.pager-next,
.pager-last,
.pager-ellipsis,
.pager__current-item,
.pager-current {
display: inline;
padding: 0 .5em;
list-style-type: none;
background-image: none; }
.pager__current-item,
.pager-current {
font-weight: bold; }
body {
background-color: #eeeeee; }
.page {
background-color: #fff; }
.header {
padding-top: 10px; }
@media (min-width: 666px) {
.header {
padding-top: 20px; } }
.footer {
margin-top: 2.11363636rem;
padding: 0.70454545rem 0;
text-align: center;
border-top: 2px solid #333333; }
.footer p {
margin: 0; }
th,
label,
legend,
figcaption {
font-size: 0.81818182rem;
line-height: 1.40909091rem; }
@media (min-width: 1111px) {
th,
label,
legend,
figcaption {
font-size: 0.88888889rem;
line-height: 1.40909091rem; } }
.language-selector,
article > header,
.content-dates,
.footer {
font-size: 0.72727273rem;
line-height: 1.40909091rem; }
@media (min-width: 1111px) {
.language-selector,
article > header,
.content-dates,
.footer {
font-size: 0.77777778rem;
line-height: 1.40909091rem; } }
h1,
h2,
h3,
th,
nav,
label,
legend,
article > header,
.content-dates,
.header,
.footer {
font-family: Futura, "Century Gothic", AppleGothic, sans-serif;
color: #333333;
font-weight: normal; }
article > header {
color: #666666; }
article .submitted {
margin-bottom: .5rem; }
@media (min-width: 888px) {
article .submitted,
article .tags {
display: inline-block;
padding-right: 1rem; } }
article .tags ul {
display: inline-flex;
flex-wrap: wrap;
margin: 0;
padding: 0; }
article .tags li {
list-style-type: none;
padding-right: 0.28181818rem; }
article .content-dates {
color: #666666;
text-align: right; }
article code {
font-size: 0.72727273rem;
line-height: 1.40909091rem;
overflow-wrap: break-word; }
@media (min-width: 1111px) {
article code {
font-size: 0.77777778rem;
line-height: 1.40909091rem; } }
article pre {
color: #333333;
border-radius: 3px;
padding: 5px;
border: 1px solid #cccccc;
background-color: #fff;
overflow: auto;
max-height: 300px;
max-width: 90vw; }
article pre.chroma {
max-height: initial;
overflow-x: scroll; }
article pre > code {
display: inline-block;
white-space: pre; }
article .js-clipboard-button {
display: block; }
.title-submitted {
margin-bottom: 0; }
@media (min-width: 666px) {
figure.image figcaption {
display: table-caption;
caption-side: bottom; } }
figure.image figcaption h4,
figure.image figcaption p {
margin: 0; }
@media (min-width: 666px) {
figure.image {
display: table; }
figure.image img {
display: block; }
figure.image.center {
margin-left: auto;
margin-right: auto; }
figure.image.left {
padding: 0 0.70454545rem 0.70454545rem 0;
margin: 0;
float: left;
clear: both; }
figure.image.left figcaption {
padding: 0 0.70454545rem 0.70454545rem 0; }
figure.image.right {
padding: 0 0 0.70454545rem 0.70454545rem;
margin: 0;
float: right;
clear: both; }
figure.image.right figcaption {
padding: 0 0 0.70454545rem 0.70454545rem; } }
figure.podcast audio {
width: 95%; }
.main-menu {
margin-top: 0.70454545rem;
outline: 0; }
.main-menu li {
margin-right: 0.70454545rem;
margin-bottom: 0.70454545rem;
padding: 0; }
.main-menu a {
display: block;
background-color: #333333;
color: #fff;
padding: 2px 8px;
text-decoration: none; }
.main-menu a:hover, .main-menu a:focus {
background-color: #666666; }
.main-menu a:active, .main-menu a.active {
background-color: #333333;
text-decoration: underline; }
.menu a.active {
text-decoration: none; }
.search-input {
margin: 1.40909091rem 0; }
.search-text {
font-size: 1.09090909rem;
line-height: 1.40909091rem;
max-width: 80%; }
.content input,
.content textarea {
margin-bottom: 1.05681818rem;
width: 92%; }
.content input:required + span::after,
.content textarea:required + span::after {
content: ' *';
color: #c00;
vertical-align: top; }
.content input:not(:placeholder-shown):valid,
.content textarea:not(:placeholder-shown):valid {
background-color: #f4feee; }
.content input:not(:placeholder-shown):invalid,
.content textarea:not(:placeholder-shown):invalid {
background-color: #fff0f0; }
.js-submitted input:valid,
.js-submitted textarea:valid {
background-color: #f4feee; }
.js-submitted input:invalid,
.js-submitted textarea:invalid {
background-color: #fff0f0; }
/*# sourceMappingURL=styles.css.map */

View File

@ -0,0 +1 @@
{"Target":"css/styles.css","MediaType":"text/css","Data":{}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
static/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

9
static/browserconfig.xml Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

59
static/css/custom.css Normal file
View File

@ -0,0 +1,59 @@
@font-face {
font-family: 'PressStart';
src: url('/fonts/PressStart/PressStart2P-Regular.ttf');
}
@font-face {
font-family: 'Dosis';
src: url('/fonts/Dosis/ShadowsIntoLight-Regular.ttf');
}
@font-face {
font-family: 'Dosis';
src: url('/fonts/Dosis/Dosis-VariableFont_wght.ttf');
}
.list-page, .single-page {
background-color: #e6e6fa;
}
h1, h2, h3, h4, h5, h6 {
font-family: Dosis;
}
body, .submitted, .tags, .navbar {
font-family: Dosis;
}
body p {
font-size: 1.3em;
}
.submitted, .tags {
font-size: 1.3em;
color: black;
}
.navbar {
font-size: 1.3em;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
padding: 12px 16px;
z-index: 1;
}
.dropdown:hover .dropdown-content {
display: block;
}

BIN
static/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

View File

@ -0,0 +1,95 @@
Copyright (c) 2011, Edgar Tolentino and Pablo Impallari (www.impallari.com|impallari@gmail.com),
Copyright (c) 2011, Igino Marini. (www.ikern.com|mail@iginomarini.com),
with Reserved Font Names "Dosis".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -0,0 +1,69 @@
Dosis Variable Font
===================
This download contains Dosis as both a variable font and static fonts.
Dosis is a variable font with this axis:
wght
This means all the styles are contained in a single file:
Dosis-VariableFont_wght.ttf
If your app fully supports variable fonts, you can now pick intermediate styles
that arent available as static fonts. Not all apps support variable fonts, and
in those cases you can use the static font files for Dosis:
static/Dosis-ExtraLight.ttf
static/Dosis-Light.ttf
static/Dosis-Regular.ttf
static/Dosis-Medium.ttf
static/Dosis-SemiBold.ttf
static/Dosis-Bold.ttf
static/Dosis-ExtraBold.ttf
Get started
-----------
1. Install the font files you want to use
2. Use your app's font picker to view the font family and all the
available styles
Learn more about variable fonts
-------------------------------
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
https://variablefonts.typenetwork.com
https://medium.com/variable-fonts
In desktop apps
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
Online
https://developers.google.com/fonts/docs/getting_started
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
Installing fonts
MacOS: https://support.apple.com/en-us/HT201749
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
Android Apps
https://developers.google.com/fonts/docs/android
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
License
-------
Please read the full license text (OFL.txt) to understand the permissions,
restrictions and requirements for usage, redistribution, and modification.
You can use them freely in your products & projects - print or digital,
commercial or otherwise. However, you can't sell the fonts on their own.
This isn't legal advice, please consider consulting a lawyer and see the full
license for all details.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,93 @@
Copyright 2012 The Press Start 2P Project Authors (cody@zone38.net), with Reserved Font Name "Press Start 2P".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

View File

@ -0,0 +1,93 @@
Copyright (c) 2010, Kimberly Geswein (kimberlygeswein.com)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
static/images/header.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
static/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
static/images/logo@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
static/mstile-150x150.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,39 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="128.000000pt" height="128.000000pt" viewBox="0 0 128.000000 128.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,128.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M284 988 c-11 -5 -24 -21 -30 -36 -7 -21 -11 -364 -5 -474 1 -10 10
-27 21 -38 17 -17 33 -20 100 -20 l79 0 17 -32 c66 -128 240 -137 319 -16 l30
46 95 4 c87 3 96 5 105 26 5 12 12 22 15 22 7 0 4 453 -4 483 -3 14 -17 29
-33 35 -35 14 -678 13 -709 0z m703 -31 c12 -8 18 -191 7 -209 -3 -5 -24 7
-47 27 -22 19 -47 35 -55 35 -8 0 -37 -20 -63 -45 -26 -25 -52 -45 -57 -45 -5
0 -54 44 -110 98 -149 142 -132 131 -164 103 -23 -19 -156 -129 -191 -157 -9
-8 -19 -14 -22 -14 -9 0 -5 196 5 206 11 11 679 12 697 1z m-337 -169 c61 -60
116 -108 121 -108 9 0 63 45 100 84 18 18 19 18 73 -25 l55 -44 0 -117 c-1
-94 -3 -118 -16 -122 -8 -3 -47 -6 -87 -6 l-72 0 -11 54 c-18 87 -78 142 -164
150 -103 10 -199 -72 -199 -169 l0 -35 -79 0 c-61 0 -80 3 -85 15 -3 8 -5 65
-5 125 0 99 2 113 20 128 12 9 30 25 42 36 12 10 42 35 67 55 25 20 47 38 50
41 16 18 65 50 71 48 4 -2 58 -51 119 -110z m50 -178 c147 -77 93 -294 -73
-292 -57 0 -107 34 -136 90 -18 36 -18 45 -6 107 16 85 135 138 215 95z"/>
<path d="M413 769 c-78 -62 -110 -94 -106 -105 4 -11 14 -8 47 19 22 18 61 49
85 68 25 19 53 42 63 52 18 17 20 17 49 -8 33 -27 55 -25 40 3 -9 16 -35 41
-56 54 -6 3 -61 -34 -122 -83z"/>
<path d="M841 690 c-23 -22 -39 -44 -36 -50 7 -11 17 -6 59 33 24 21 40 22 60
2 19 -19 26 -19 26 1 0 17 -38 53 -55 54 -6 0 -30 -18 -54 -40z"/>
<path d="M557 576 c-78 -47 -73 -87 13 -91 57 -3 68 -12 75 -63 4 -26 7 -54 8
-62 3 -20 34 -25 54 -9 23 20 64 115 57 134 -6 15 -43 41 -55 38 -3 -1 -12 10
-20 25 -19 37 -41 59 -63 59 -9 0 -41 -14 -69 -31z m77 -8 c-3 -4 -9 -8 -15
-8 -5 0 -9 4 -9 8 0 5 7 9 15 9 8 0 12 -4 9 -9z m-34 -27 c0 -13 -9 -20 -30
-23 -36 -5 -41 14 -7 30 32 15 37 14 37 -7z m81 -34 c18 -13 20 -19 10 -31
-11 -13 -16 -12 -35 11 -15 18 -21 34 -18 52 5 24 5 24 13 4 4 -11 18 -28 30
-36z m28 -99 c-11 -21 -21 -38 -23 -38 -2 0 -6 18 -8 39 -3 38 -2 40 23 38
l27 -2 -19 -37z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

14
static/site.webmanifest Normal file
View File

@ -0,0 +1,14 @@
{
"name": "",
"short_name": "",
"icons": [
{
"src": "/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

1
themes/zen Submodule

@ -0,0 +1 @@
Subproject commit 1958081f6bc24b61d5efb4460bc6a7dd505de081