Remove Hugo

rust
Elnu 1 year ago
parent 94a54a7178
commit 9b386cd7b0

14
.gitignore vendored

@ -1,17 +1,3 @@
# Generated files by hugo
/public/
/resources/_gen/
/assets/jsconfig.json
hugo_stats.json
# Executable may be added to repository
hugo.exe
hugo.darwin
hugo.linux
# Temporary lock file while building
/.hugo_build.lock
# Ignore challenge submissions to prevent bloating git repo # Ignore challenge submissions to prevent bloating git repo
/assets/ /assets/

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

@ -1,3 +0,0 @@
#!/bin/bash
hugo
#find public -name '*.html' -type f -exec tidy --quiet yes --drop-empty-elements no --hide-comments yes -mq '{}' \; &> /dev/null

@ -1,20 +0,0 @@
baseURL = 'https://tegakituesday.com/'
languageCode = 'en-us'
title = 'Tegaki Tuesday'
theme = 'tegakituesday.com'
enableEmoji = true
disableKinds = ["taxonomy", "taxonomyTerm", "RSS"]
[params]
AuthorName = "Elnu"
MatomoURL = "matomo.elnu.com"
MatomoSiteId = "4"
CopyrightStart = 2021
[permalinks]
challenges = "/:filename"
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true

@ -1,3 +0,0 @@
<div id="cc"><a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"><img src="https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-sa.svg"></a></div>
<br>
Submissions are copyright &copy; {{ partial "copyright-years.html" . }} their respective submitters, and are licensed under the <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.

@ -1 +0,0 @@
leaderboard.html

@ -1,3 +0,0 @@
<hr>
<p style="text-align: center">{{ markdownify .Inner }}</p>
<hr>

@ -1,23 +0,0 @@
<!--
Parameters:
type - (Required) album / track / playlist / artist
id - (Required) Target ID
width - (Optional) width
height - (Optional) height
-->
{{ if .IsNamedParams }}
<iframe src="https://open.spotify.com/embed/{{ .Get "type" }}/{{ .Get "id" }}"
width="{{ default "100%" (.Get "width") }}"
height="{{ default "380" (.Get "height") }}"
frameborder="0"
allowtransparency="true"
allow="encrypted-media"></iframe>
{{ else }}
<iframe src="https://open.spotify.com/embed/{{ .Get 0 }}/{{ .Get 1 }}"
width="{{ default "100%" (.Get 2) }}"
height="{{ default "380" (.Get 3) }}"
frameborder="0"
allowtransparency="true"
allow="encrypted-media"></iframe>
{{ end }}

@ -1,9 +1,21 @@
{ pkgs ? import <nixpkgs> {} }: # <shell.nix>
{ pkgs ? import <nixpkgs> {}}:
with pkgs; let
rust_overlay = import (builtins.fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz");
mkShell { pkgs = import <nixpkgs> { overlays = [ rust_overlay ]; };
buildInputs = [ ruststable = (pkgs.rust-bin.stable.latest.default.override {
hugo extensions = [
"rust-src"
];
});
in
pkgs.mkShell {
buildInputs = with pkgs; [
ruststable
rust-analyzer
bacon
#pkg-config
#openssl
]; ];
} }

Before

Width:  |  Height:  |  Size: 19 MiB

After

Width:  |  Height:  |  Size: 19 MiB

@ -1,5 +0,0 @@
{{ define "main" }}
<h1>Page Not Found</h1>
<p>This page doesn't exist.</p>
<p><a href="/">Go back to the home page</a></p>
{{ end }}

@ -1,16 +0,0 @@
<!-- https://github.com/bep/hugo-mod-misc/blob/79a51b35c8cd162bc9977aba0c07bd0e93f69d25/render-hooks/layouts/_default/_markup/render-link.html -->
{{- $link := .Destination -}}
{{ $isRemote := strings.HasPrefix $link "http" }}
{{- if not $isRemote -}}
{{ $url := urls.Parse .Destination }}
{{- if $url.Path -}}
{{ $fragment := "" }}
{{- with $url.Fragment }}
{{ $fragment = printf "#%s" . }}
{{ end -}}
{{- with .Page.GetPage $url.Path }}
{{ $link = printf "%s%s" .RelPermalink $fragment }}
{{ end }}
{{ end -}}
{{- end -}}
<a href="{{ $link | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if $isRemote }} target="_blank"{{ end }}>{{ .Text | safeHTML }}</a>{{ "" -}}

@ -1,31 +0,0 @@
<!DOCTYPE html>
<html lang="en">
{{ block "head" . }}
{{ partial "head.html" . }}
{{ end }}
<body>
<img id="mascot" src="/mascot.png">
<div id="content">
<div>
{{ block "primary" . }}
<div class="content">
{{ block "main" . }}{{ end }}
</div>
{{ end }}
{{ block "mainFooter" . }}
{{ partial "footer.html" (partial "footers/main.html" .) }}
{{ end }}
</div>
<div>
<div class="content">
{{ block "secondary" . }}
{{ partial "content.html" (dict "Content" (.Scratch.Get "secondary")) }}
{{ end }}
</div>
{{ block "secondaryFooter" . }}
{{ partial "footer.html" (partial "footers/main.html" .) }}
{{ end }}
</div>
</div>
</body>
</html>

@ -1,171 +0,0 @@
{{- define "head" -}}
{{- $current := replaceRE `[^0-9]` "" .File -}}
{{- .Scratch.Set "title" .Site.Title -}}
{{- .Scratch.Add "title" " #" -}}
{{- .Scratch.Add "title" (replaceRE `[^0-9]` "" .File) -}}
{{- partial "head.html" . -}}
{{- end -}}
{{- define "primary" -}}
{{- $current := replaceRE `[^0-9]` "" .File -}}
{{- partial "nav.html" . -}}
<div id="challenge">
<div>
{{ if not .Params.override }}
<button id="direction" title="Text direction"></button>
<button lang="ja" id="highlight" title="Vocab/kanji links">漢字</button>
{{ end }}
<button lang="ja" id="kyujitai" title="Shinjitai/kyujitai">旧字体</button>
{{ if .Params.english }}
<button id="english" title="Show/hide translation">Show translation</button>
{{ end }}
<a id="kyujitai-info" target="_blank" class="clickable-icon" href="https://en.wikipedia.org/wiki/Ky%C5%ABjitai"><svg class="svg-inline" aria-hidden="true" focusable="false" data-prefix="fas" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z"></path></svg></a>
<header>
<h3><a href="/">Tegaki Tuesday</a> #{{- $current -}}{{ if .Params.embellishment }} {{ end }}{{ .Params.embellishment | markdownify | emojify }}</h3>
<small><ruby><rp>(</rp><rt></rt><rp>)</rp></ruby><ruby><rp>(</rp><rt></rt><rp>)</rp></ruby>きの<ruby><rp>(</rp><rt></rt><rp>)</rp></ruby><ruby><rp>(</rp><rt>よう</rt><rp>)</rp></ruby><ruby><rp>(</rp><rt></rt><rp>)</rp></ruby>{{- $current -}}・<time datetime="{{- .Date.Format " 2006-01-02T15:04:05Z07:00" -}}">{{- .Date.Format "2006年01月02日" -}}</time></small>
</header>
{{ if .Params.override }}
<div>
{{ .Params.override | safeHTML }}
</div>
{{ else }}
{{ if .Params.english }}
<div id="challenge-english" style="display: none">
<!-- English view -->
{{- range.Params.english -}}
<p>{{- $.RenderString . -}}</p>
{{- end -}}
<br>
</div>
{{ end }}
<div id="challenge-vocab" lang="ja">
<!-- Vocab view -->
<!-- Outer list: lines -->
{{- range.Params.japanese -}}
<!-- Inner list: sublines -->
{{- range. -}}
<!-- Innermost list: words -->
<p>{{- range. -}}
{{- if eq (printf "%T" .text) "string" -}}
{{- $.Scratch.Set "dictionary" .text -}}
{{- $.Scratch.Set "html" .text -}}
{{- else -}}
{{- $.Scratch.Set "dictionary" "" -}}
{{- $.Scratch.Set "html" "" -}}
{{- range.text -}}
{{- if reflect.IsMap . -}}
{{- range $kanji, $furigana := . -}}
{{- $.Scratch.Add "dictionary" $kanji -}}
{{- $.Scratch.Add "html" "<ruby>" -}}
{{- $.Scratch.Add "html" $kanji -}}
{{- $.Scratch.Add "html" "<rp>(</rp><rt>" -}}
{{- $.Scratch.Add "html" $furigana -}}
{{- $.Scratch.Add "html" "</rt><rp>)</rp></ruby>" -}}
{{- end -}}
{{- else -}}
{{- $.Scratch.Add "dictionary" . -}}
{{- $.Scratch.Add "html" . -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{ if .dictionary }}
{{- $.Scratch.Set "dictionary" .dictionary -}}
{{ end }}
{{- if not (and .dictionary (hasPrefix .dictionary "http")) -}}
{{- $.Scratch.Set "dictionary" (printf "%s" ($.Scratch.Get "dictionary") | printf "%s%s" "https://jisho.org/word/" | printf "%s") -}}
{{- end -}}
{{- if and (not .dictionary) (not .pos) -}}
{{- $.Scratch.Get "html" | safeHTML -}}
{{- else -}}
<a href="{{- $.Scratch.Get "dictionary" -}}" class="{{- .pos -}}" title="{{- .pos -}}" target="_blank">{{- $.Scratch.Get "html" | safeHTML -}}</a>
{{- end -}}
{{- end -}}</p>
{{- end -}}
{{- end -}}
</div>
<div id="challenge-kanji" lang="ja" style="display: none">
<!-- Kanji view -->
<!-- Outer list: lines -->
{{- range.Params.japanese -}}
<!-- Inner list: sublines -->
{{- range. -}}
<!-- Innermost list: words -->
<p>{{- range. -}}
{{- if eq (printf "%T" .text) "string" -}}
{{- .text -}}
{{- else -}}
{{- range.text -}}
{{- if reflect.IsMap . -}}
{{- range $kanji, $furigana := . -}}
<a href="https://jisho.org/search/{{- $kanji -}} %23kanji" target="_blank"><ruby>{{- $kanji | safeHTML -}}<rp>(</rp><rt>{{- $furigana | safeHTML -}}</rt><rp>)</rp></ruby></a>
{{- end -}}
{{- else -}}
{{- . -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}</p>
{{- end -}}
{{- end -}}
</div>
{{ end }}
<script src="/js/toggle.js"></script>
</div>
</div>
<div class="content">
{{- partial "content.html" . -}}
{{ with .Params.song }}
<p>This week's challenge is from the lyrics of
{{ if .override }}
{{ with .override }}
{{ partial "content.html" (dict "Content" (markdownify .)) }}
{{- end -}}
{{ else }}
{{ with .japanese }}{{ partial "content.html" (dict "Content" .) }}{{ end }}{{ if and .japanese .english }}/{{ end }}{{ with .english }}<em>{{ . }}</em>{{ end -}}
{{ end -}}
{{- with $.Params.youtube }} (<a href="https://www.youtube.com/watch?v={{ . }}" target="_blank">YouTube</a>){{ end -}}
{{- with $.Params.spotify }} (<a href="https://open.spotify.com/track/{{ . }}" target="_blank">Spotify</a>){{ end -}}
:</p>
{{ end }}
{{ with .Params.youtube }}
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden">
<iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0" src="https://www.youtube-nocookie.com/embed/{{ . }}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
{{ end }}
{{ with .Params.spotify }}
<iframe src="https://open.spotify.com/embed/track/{{ . }}"
width="100%"
height="380"
frameborder="0"
allowtransparency="true"
allow="encrypted-media"></iframe>
{{ end }}
{{ with .Params.translation }}
<p>Translation{{ with .author }} by {{ . }}{{ end }}{{ with .site }} via <a href="{{ .link }}" target="_blank">{{ .name }}</a></p>{{ end }}
{{ end }}
{{ with .Params.suggester }}
<p><em>This challenge was suggested by <strong>{{ . }}</strong> using the <code>-h suggest</code> command.</em></p>
{{ end }}
</div>
{{- end -}}
{{- define "secondary" -}}
{{- $current := replaceRE `[^0-9]` "" .File -}}
<div id="submissions">
{{- if isset .Site.Data "challenges" -}}
{{- range index .Site.Data.challenges ($current) -}}
{{- $submission := . -}}
{{- range.images -}}
{{- $path := printf "%s" . | printf "%s%s" "/" | printf "%s%s" $current | printf "%s" -}}
{{- $image := resources.Get $path -}}
{{- partial "submission.html" (dict "submission" $submission "challenge" $current "image" $image) -}}
{{- end -}}
{{- end -}}
{{- end -}}
</div>
{{- end -}}
{{- define "secondaryFooter" -}}
{{- partial "footer.html" (partial "footers/submissions.html" .) -}}
{{- end -}}

@ -1,3 +0,0 @@
{{ define "main" }}
{{ partial "content" . }}
{{ end }}

@ -1 +0,0 @@
{{ replaceRE `\[([^\]]*)\]{([^\}]*)}` `<ruby lang="ja">$1<rp>(</rp><rt>$2</rt><rp>)</rp></ruby>` .Content | safeHTML }}

@ -1 +0,0 @@
{{ if ne (dateFormat "2006" now | int) .Site.Params.CopyrightStart }}{{ .Site.Params.CopyrightStart }}&ndash;{{ end }}{{ dateFormat "2006" now }}

@ -1,2 +0,0 @@
Copyright &copy; {{ partial "copyright-years.html" . }} <b>{{ .Site.Title }}</b>. All rights reserved. 字ちゃん mascot art by <a href="https://twitter.com/bellumela" target="_blank">@bellumela</a>.<br>
Site last regenerated with <a href="https://gohugo.io/" target="_blank">Hugo</a> at {{ partial "time.html" (dict "Date" now) }}.

@ -1,44 +0,0 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<title>{{ if .Scratch.Get "title" }}{{ .Scratch.Get "title" }}{{ else }}{{ if not .IsHome }}{{ if eq .Kind "term" }}#{{ end }}{{ .Title }} | {{ end }} {{ .Site.Title }}{{ end }}</title>
<link rel="stylesheet" href="/css/style.css?{{ now.Unix }}" type="text/css" media="all" />
{{ with .OutputFormats.Get "rss" -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
<script>
window.onload = () => {
const secondary = document.querySelector("#content > div:last-child");
const mascot = document.getElementById("mascot");
const scrollHandler = (event) => {
const element = event.target;
if (element.scrollHeight - element.scrollTop === element.clientHeight) {
mascot.classList.add("hidden");
} else {
mascot.classList.remove("hidden");
}
}
secondary.addEventListener("scroll", scrollHandler);
secondary.addEventListener("touchmove", scrollHandler);
};
</script>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://{{ .Site.Params.MatomoURL }}/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '{{ .Site.Params.MatomoSiteId }}']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>

@ -1,24 +0,0 @@
<nav>
{{ $current := int (replaceRE `[^0-9]` "" .File) }}
{{ $scratch := newScratch }}
{{ $latest := int (index .Site.RegularPages 0).File.TranslationBaseName }}
{{ $scratch.Set "isLatest" (eq $current $latest) }}
{{ if ne $current 1 }}
<a class="nav-button" href="../{{ sub $current 1 }}"><svg class="svg-inline" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"></path></svg>&nbsp;#{{ sub $current 1 }}</a>
{{ end }}
<!-- <span class="title"><a href="/"><i class="fa-solid fa-house"></i> Homepage</a></span> -->
<form onsubmit="window.location.href = '/' + this.getElementsByTagName('input')[0].value + '?nav'; return false"><input id="navInput" type="number" min="1" max="{{ $latest }}" value="{{ $current }}" autocomplete="false"></form>
<script>
if (window.location.href.split('?')[1] === "nav") {
window.history.replaceState(null, null, window.location.pathname);
const navInput = document.getElementById("navInput");
navInput.focus();
const tmp = navInput.value;
navInput.value = "";
navInput.value = tmp;
}
</script>
{{ if not ($scratch.Get "isLatest") }}
<a class="nav-button" href="../{{ add $current 1 }}">#{{ add $current 1 }}&nbsp;<svg class="svg-inline" aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"></path></svg></a>
{{ end }}
</nav>

@ -1,11 +0,0 @@
<div>
<figure>
{{ if .image }}
{{ $thumbnail := .image.Resize "500x" }}
<a href="{{ .image.RelPermalink }}" target="_blank"><img src="{{ $thumbnail.RelPermalink }}" style="aspect-ratio: {{ .image.Width }} / {{ .image.Height }}" title="{{ .submission.username }}'s submission"></a>
<figcaption><a href="https://discord.com/users/{{ .submission.id }}"><img class="svg-inline" src="/discord.svg"> {{ .submission.username }}</a>{{ if .submission.late }} (Late&nbsp;{{ time.Format "2006/01/02" (int (mul -0.001 (int (index (findRE `-([1-9]){5,}\w+` .image.Name 1) 0)))) }}){{ end }}</figcaption>
{{ else }}
<figcaption>Image not found!</figcaption>
{{ end }}
</figure>
</div>

@ -1 +0,0 @@
<time datetime="{{ .Date.Format " 2006-01-02T15:04:05Z07:00" }}">{{ .Date.Format "2006/01/02 15:04" }}</time>

@ -1,8 +0,0 @@
{{- $scratch := newScratch -}}
{{- $scratch.Set "current" 0 -}}
{{- range.Site.RegularPages -}}
{{- if gt (int .File.TranslationBaseName) ($scratch.Get "current") -}}
{{- $scratch.Set "current" (int .File.TranslationBaseName) -}}
{{- end -}}
{{- end -}}
{{- $scratch.Get "current" -}}

@ -1 +0,0 @@
{{ .Page.Scratch.Set "secondary" (.Inner | .Page.RenderString ) }}

@ -1,898 +0,0 @@
@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&family=Patrick+Hand&display=swap');
@import url('/fonts/K-Gothic/stylesheet.css');
:root {
/* Catppuccin color palette */
--ctp-latte-rosewater: #de9584;
--ctp-latte-rosewater-rgb: rgb(222, 149, 132);
--ctp-latte-rosewater-hsl: hsl(11, 58%, 69%);
--ctp-frappe-rosewater: #f2d5cf;
--ctp-frappe-rosewater-rgb: rgb(242, 213, 207);
--ctp-frappe-rosewater-hsl: hsl(10, 57%, 88%);
--ctp-macchiato-rosewater: #f4dbd6;
--ctp-macchiato-rosewater-rgb: rgb(244, 219, 214);
--ctp-macchiato-rosewater-hsl: hsl(10, 58%, 90%);
--ctp-mocha-rosewater: #f5e0dc;
--ctp-mocha-rosewater-rgb: rgb(245, 224, 220);
--ctp-mocha-rosewater-hsl: hsl(10, 56%, 91%);
--ctp-latte-flamingo: #dd7878;
--ctp-latte-flamingo-rgb: rgb(221, 120, 120);
--ctp-latte-flamingo-hsl: hsl(0, 60%, 67%);
--ctp-frappe-flamingo: #eebebe;
--ctp-frappe-flamingo-rgb: rgb(238, 190, 190);
--ctp-frappe-flamingo-hsl: hsl(0, 59%, 84%);
--ctp-macchiato-flamingo: #f0c6c6;
--ctp-macchiato-flamingo-rgb: rgb(240, 198, 198);
--ctp-macchiato-flamingo-hsl: hsl(0, 58%, 86%);
--ctp-mocha-flamingo: #f2cdcd;
--ctp-mocha-flamingo-rgb: rgb(242, 205, 205);
--ctp-mocha-flamingo-hsl: hsl(0, 59%, 88%);
--ctp-latte-pink: #ec83d0;
--ctp-latte-pink-rgb: rgb(236, 131, 208);
--ctp-latte-pink-hsl: hsl(316, 73%, 72%);
--ctp-frappe-pink: #f4b8e4;
--ctp-frappe-pink-rgb: rgb(244, 184, 228);
--ctp-frappe-pink-hsl: hsl(316, 73%, 84%);
--ctp-macchiato-pink: #f5bde6;
--ctp-macchiato-pink-rgb: rgb(245, 189, 230);
--ctp-macchiato-pink-hsl: hsl(316, 74%, 85%);
--ctp-mocha-pink: #f5c2e7;
--ctp-mocha-pink-rgb: rgb(245, 194, 231);
--ctp-mocha-pink-hsl: hsl(316, 72%, 86%);
--ctp-latte-mauve: #8839ef;
--ctp-latte-mauve-rgb: rgb(136, 57, 239);
--ctp-latte-mauve-hsl: hsl(266, 85%, 58%);
--ctp-frappe-mauve: #ca9ee6;
--ctp-frappe-mauve-rgb: rgb(202, 158, 230);
--ctp-frappe-mauve-hsl: hsl(277, 59%, 76%);
--ctp-macchiato-mauve: #c6a0f6;
--ctp-macchiato-mauve-rgb: rgb(198, 160, 246);
--ctp-macchiato-mauve-hsl: hsl(267, 83%, 80%);
--ctp-mocha-mauve: #cba6f7;
--ctp-mocha-mauve-rgb: rgb(203, 166, 247);
--ctp-mocha-mauve-hsl: hsl(267, 84%, 81%);
--ctp-latte-red: #d20f39;
--ctp-latte-red-rgb: rgb(210, 15, 57);
--ctp-latte-red-hsl: hsl(347, 87%, 44%);
--ctp-frappe-red: #e78284;
--ctp-frappe-red-rgb: rgb(231, 130, 132);
--ctp-frappe-red-hsl: hsl(359, 68%, 71%);
--ctp-macchiato-red: #ed8796;
--ctp-macchiato-red-rgb: rgb(237, 135, 150);
--ctp-macchiato-red-hsl: hsl(351, 74%, 73%);
--ctp-mocha-red: #f38ba8;
--ctp-mocha-red-rgb: rgb(243, 139, 168);
--ctp-mocha-red-hsl: hsl(343, 81%, 75%);
--ctp-latte-maroon: #e64553;
--ctp-latte-maroon-rgb: rgb(230, 69, 83);
--ctp-latte-maroon-hsl: hsl(355, 76%, 59%);
--ctp-frappe-maroon: #ea999c;
--ctp-frappe-maroon-rgb: rgb(234, 153, 156);
--ctp-frappe-maroon-hsl: hsl(358, 66%, 76%);
--ctp-macchiato-maroon: #ee99a0;
--ctp-macchiato-maroon-rgb: rgb(238, 153, 160);
--ctp-macchiato-maroon-hsl: hsl(355, 71%, 77%);
--ctp-mocha-maroon: #eba0ac;
--ctp-mocha-maroon-rgb: rgb(235, 160, 172);
--ctp-mocha-maroon-hsl: hsl(350, 65%, 77%);
--ctp-latte-peach: #fe640b;
--ctp-latte-peach-rgb: rgb(254, 100, 11);
--ctp-latte-peach-hsl: hsl(22, 99%, 52%);
--ctp-frappe-peach: #ef9f76;
--ctp-frappe-peach-rgb: rgb(239, 159, 118);
--ctp-frappe-peach-hsl: hsl(20, 79%, 70%);
--ctp-macchiato-peach: #f5a97f;
--ctp-macchiato-peach-rgb: rgb(245, 169, 127);
--ctp-macchiato-peach-hsl: hsl(21, 86%, 73%);
--ctp-mocha-peach: #fab387;
--ctp-mocha-peach-rgb: rgb(250, 179, 135);
--ctp-mocha-peach-hsl: hsl(23, 92%, 75%);
--ctp-latte-yellow: #e49320;
--ctp-latte-yellow-rgb: rgb(228, 147, 32);
--ctp-latte-yellow-hsl: hsl(35, 78%, 51%);
--ctp-frappe-yellow: #e5c890;
--ctp-frappe-yellow-rgb: rgb(229, 200, 144);
--ctp-frappe-yellow-hsl: hsl(40, 62%, 73%);
--ctp-macchiato-yellow: #eed49f;
--ctp-macchiato-yellow-rgb: rgb(238, 212, 159);
--ctp-macchiato-yellow-hsl: hsl(40, 70%, 78%);
--ctp-mocha-yellow: #f9e2af;
--ctp-mocha-yellow-rgb: rgb(249, 226, 175);
--ctp-mocha-yellow-hsl: hsl(41, 86%, 83%);
--ctp-latte-green: #40a02b;
--ctp-latte-green-rgb: rgb(64, 160, 43);
--ctp-latte-green-hsl: hsl(109, 58%, 40%);
--ctp-frappe-green: #a6d189;
--ctp-frappe-green-rgb: rgb(166, 209, 137);
--ctp-frappe-green-hsl: hsl(96, 44%, 68%);
--ctp-macchiato-green: #a6da95;
--ctp-macchiato-green-rgb: rgb(166, 218, 149);
--ctp-macchiato-green-hsl: hsl(105, 48%, 72%);
--ctp-mocha-green: #a6e3a1;
--ctp-mocha-green-rgb: rgb(166, 227, 161);
--ctp-mocha-green-hsl: hsl(115, 54%, 76%);
--ctp-latte-teal: #179299;
--ctp-latte-teal-rgb: rgb(23, 146, 153);
--ctp-latte-teal-hsl: hsl(183, 74%, 35%);
--ctp-frappe-teal: #81c8be;
--ctp-frappe-teal-rgb: rgb(129, 200, 190);
--ctp-frappe-teal-hsl: hsl(172, 39%, 65%);
--ctp-macchiato-teal: #8bd5ca;
--ctp-macchiato-teal-rgb: rgb(139, 213, 202);
--ctp-macchiato-teal-hsl: hsl(171, 47%, 69%);
--ctp-mocha-teal: #94e2d5;
--ctp-mocha-teal-rgb: rgb(148, 226, 213);
--ctp-mocha-teal-hsl: hsl(170, 57%, 73%);
--ctp-latte-sky: #04a5e5;
--ctp-latte-sky-rgb: rgb(4, 165, 229);
--ctp-latte-sky-hsl: hsl(197, 97%, 46%);
--ctp-frappe-sky: #99d1db;
--ctp-frappe-sky-rgb: rgb(153, 209, 219);
--ctp-frappe-sky-hsl: hsl(189, 48%, 73%);
--ctp-macchiato-sky: #91d7e3;
--ctp-macchiato-sky-rgb: rgb(145, 215, 227);
--ctp-macchiato-sky-hsl: hsl(189, 59%, 73%);
--ctp-mocha-sky: #89dceb;
--ctp-mocha-sky-rgb: rgb(137, 220, 235);
--ctp-mocha-sky-hsl: hsl(189, 71%, 73%);
--ctp-latte-sapphire: #209fb5;
--ctp-latte-sapphire-rgb: rgb(32, 159, 181);
--ctp-latte-sapphire-hsl: hsl(189, 70%, 42%);
--ctp-frappe-sapphire: #85c1dc;
--ctp-frappe-sapphire-rgb: rgb(133, 193, 220);
--ctp-frappe-sapphire-hsl: hsl(199, 55%, 69%);
--ctp-macchiato-sapphire: #7dc4e4;
--ctp-macchiato-sapphire-rgb: rgb(125, 196, 228);
--ctp-macchiato-sapphire-hsl: hsl(199, 66%, 69%);
--ctp-mocha-sapphire: #74c7ec;
--ctp-mocha-sapphire-rgb: rgb(116, 199, 236);
--ctp-mocha-sapphire-hsl: hsl(199, 76%, 69%);
--ctp-latte-blue: #2a6ef5;
--ctp-latte-blue-rgb: rgb(42, 110, 245);
--ctp-latte-blue-hsl: hsl(220, 91%, 56%);
--ctp-frappe-blue: #8caaee;
--ctp-frappe-blue-rgb: rgb(140, 170, 238);
--ctp-frappe-blue-hsl: hsl(222, 74%, 74%);
--ctp-macchiato-blue: #8aadf4;
--ctp-macchiato-blue-rgb: rgb(138, 173, 244);
--ctp-macchiato-blue-hsl: hsl(220, 83%, 75%);
--ctp-mocha-blue: #87b0f9;
--ctp-mocha-blue-rgb: rgb(135, 176, 249);
--ctp-mocha-blue-hsl: hsl(218, 90%, 75%);
--ctp-latte-lavender: #7287fd;
--ctp-latte-lavender-rgb: rgb(114, 135, 253);
--ctp-latte-lavender-hsl: hsl(231, 97%, 72%);
--ctp-frappe-lavender: #babbf1;
--ctp-frappe-lavender-rgb: rgb(186, 187, 241);
--ctp-frappe-lavender-hsl: hsl(239, 66%, 84%);
--ctp-macchiato-lavender: #b7bdf8;
--ctp-macchiato-lavender-rgb: rgb(183, 189, 248);
--ctp-macchiato-lavender-hsl: hsl(234, 82%, 85%);
--ctp-mocha-lavender: #b4befe;
--ctp-mocha-lavender-rgb: rgb(180, 190, 254);
--ctp-mocha-lavender-hsl: hsl(232, 97%, 85%);
--ctp-latte-text: #4c4f69;
--ctp-latte-text-rgb: rgb(76, 79, 105);
--ctp-latte-text-hsl: hsl(234, 16%, 35%);
--ctp-frappe-text: #c6ceef;
--ctp-frappe-text-rgb: rgb(198, 206, 239);
--ctp-frappe-text-hsl: hsl(228, 56%, 86%);
--ctp-macchiato-text: #c5cff5;
--ctp-macchiato-text-rgb: rgb(197, 207, 245);
--ctp-macchiato-text-hsl: hsl(228, 71%, 87%);
--ctp-mocha-text: #c6d0f5;
--ctp-mocha-text-rgb: rgb(198, 208, 245);
--ctp-mocha-text-hsl: hsl(227, 70%, 87%);
--ctp-latte-subtext1: #5c5f77;
--ctp-latte-subtext1-rgb: rgb(92, 95, 119);
--ctp-latte-subtext1-hsl: hsl(233, 13%, 41%);
--ctp-frappe-subtext1: #b5bddc;
--ctp-frappe-subtext1-rgb: rgb(181, 189, 220);
--ctp-frappe-subtext1-hsl: hsl(228, 36%, 79%);
--ctp-macchiato-subtext1: #b3bce0;
--ctp-macchiato-subtext1-rgb: rgb(179, 188, 224);
--ctp-macchiato-subtext1-hsl: hsl(228, 42%, 79%);
--ctp-mocha-subtext1: #b3bcdf;
--ctp-mocha-subtext1-rgb: rgb(179, 188, 223);
--ctp-mocha-subtext1-hsl: hsl(228, 41%, 79%);
--ctp-latte-subtext0: #6c6f85;
--ctp-latte-subtext0-rgb: rgb(108, 111, 133);
--ctp-latte-subtext0-hsl: hsl(233, 10%, 47%);
--ctp-frappe-subtext0: #a5acc9;
--ctp-frappe-subtext0-rgb: rgb(165, 172, 201);
--ctp-frappe-subtext0-hsl: hsl(228, 25%, 72%);
--ctp-macchiato-subtext0: #a1aacb;
--ctp-macchiato-subtext0-rgb: rgb(161, 170, 203);
--ctp-macchiato-subtext0-hsl: hsl(227, 29%, 71%);
--ctp-mocha-subtext0: #a1a8c9;
--ctp-mocha-subtext0-rgb: rgb(161, 168, 201);
--ctp-mocha-subtext0-hsl: hsl(229, 27%, 71%);
--ctp-latte-overlay2: #7c7f93;
--ctp-latte-overlay2-rgb: rgb(124, 127, 147);
--ctp-latte-overlay2-hsl: hsl(232, 10%, 53%);
--ctp-frappe-overlay2: #949bb7;
--ctp-frappe-overlay2-rgb: rgb(148, 155, 183);
--ctp-frappe-overlay2-hsl: hsl(228, 20%, 65%);
--ctp-macchiato-overlay2: #8f97b7;
--ctp-macchiato-overlay2-rgb: rgb(143, 151, 183);
--ctp-macchiato-overlay2-hsl: hsl(228, 22%, 64%);
--ctp-mocha-overlay2: #8e95b3;
--ctp-mocha-overlay2-rgb: rgb(142, 149, 179);
--ctp-mocha-overlay2-hsl: hsl(229, 20%, 63%);
--ctp-latte-overlay1: #8c8fa1;
--ctp-latte-overlay1-rgb: rgb(140, 143, 161);
--ctp-latte-overlay1-hsl: hsl(231, 10%, 59%);
--ctp-frappe-overlay1: #838aa4;
--ctp-frappe-overlay1-rgb: rgb(131, 138, 164);
--ctp-frappe-overlay1-hsl: hsl(227, 15%, 58%);
--ctp-macchiato-overlay1: #7d84a2;
--ctp-macchiato-overlay1-rgb: rgb(125, 132, 162);
--ctp-macchiato-overlay1-hsl: hsl(229, 17%, 56%);
--ctp-mocha-overlay1: #7b819d;
--ctp-mocha-overlay1-rgb: rgb(123, 129, 157);
--ctp-mocha-overlay1-hsl: hsl(229, 15%, 55%);
--ctp-latte-overlay0: #9ca0b0;
--ctp-latte-overlay0-rgb: rgb(156, 160, 176);
--ctp-latte-overlay0-hsl: hsl(228, 11%, 65%);
--ctp-frappe-overlay0: #737891;
--ctp-frappe-overlay0-rgb: rgb(115, 120, 145);
--ctp-frappe-overlay0-hsl: hsl(230, 12%, 51%);
--ctp-macchiato-overlay0: #6c728d;
--ctp-macchiato-overlay0-rgb: rgb(108, 114, 141);
--ctp-macchiato-overlay0-hsl: hsl(229, 13%, 49%);
--ctp-mocha-overlay0: #696d86;
--ctp-mocha-overlay0-rgb: rgb(105, 109, 134);
--ctp-mocha-overlay0-hsl: hsl(232, 12%, 47%);
--ctp-latte-surface2: #acb0be;
--ctp-latte-surface2-rgb: rgb(172, 176, 190);
--ctp-latte-surface2-hsl: hsl(227, 12%, 71%);
--ctp-frappe-surface2: #62677e;
--ctp-frappe-surface2-rgb: rgb(98, 103, 126);
--ctp-frappe-surface2-hsl: hsl(229, 13%, 44%);
--ctp-macchiato-surface2: #5a5f78;
--ctp-macchiato-surface2-rgb: rgb(90, 95, 120);
--ctp-macchiato-surface2-hsl: hsl(230, 14%, 41%);
--ctp-mocha-surface2: #565970;
--ctp-mocha-surface2-rgb: rgb(86, 89, 112);
--ctp-mocha-surface2-hsl: hsl(233, 13%, 39%);
--ctp-latte-surface1: #bcc0cc;
--ctp-latte-surface1-rgb: rgb(188, 192, 204);
--ctp-latte-surface1-hsl: hsl(225, 14%, 77%);
--ctp-frappe-surface1: #51566c;
--ctp-frappe-surface1-rgb: rgb(81, 86, 108);
--ctp-frappe-surface1-hsl: hsl(229, 14%, 37%);
--ctp-macchiato-surface1: #484c64;
--ctp-macchiato-surface1-rgb: rgb(72, 76, 100);
--ctp-macchiato-surface1-hsl: hsl(231, 16%, 34%);
--ctp-mocha-surface1: #43465a;
--ctp-mocha-surface1-rgb: rgb(67, 70, 90);
--ctp-mocha-surface1-hsl: hsl(232, 15%, 31%);
--ctp-latte-surface0: #ccd0da;
--ctp-latte-surface0-rgb: rgb(204, 208, 218);
--ctp-latte-surface0-hsl: hsl(223, 16%, 83%);
--ctp-frappe-surface0: #414559;
--ctp-frappe-surface0-rgb: rgb(65, 69, 89);
--ctp-frappe-surface0-hsl: hsl(230, 16%, 30%);
--ctp-macchiato-surface0: #363a4f;
--ctp-macchiato-surface0-rgb: rgb(54, 58, 79);
--ctp-macchiato-surface0-hsl: hsl(230, 19%, 26%);
--ctp-mocha-surface0: #313244;
--ctp-mocha-surface0-rgb: rgb(49, 50, 68);
--ctp-mocha-surface0-hsl: hsl(237, 16%, 23%);
--ctp-latte-base: #eff1f5;
--ctp-latte-base-rgb: rgb(239, 241, 245);
--ctp-latte-base-hsl: hsl(220, 23%, 95%);
--ctp-frappe-base: #303446;
--ctp-frappe-base-rgb: rgb(48, 52, 70);
--ctp-frappe-base-hsl: hsl(229, 19%, 23%);
--ctp-macchiato-base: #24273a;
--ctp-macchiato-base-rgb: rgb(36, 39, 58);
--ctp-macchiato-base-hsl: hsl(232, 23%, 18%);
--ctp-mocha-base: #1e1e2e;
--ctp-mocha-base-rgb: rgb(30, 30, 46);
--ctp-mocha-base-hsl: hsl(240, 21%, 15%);
--ctp-latte-mantle: #e6e9ef;
--ctp-latte-mantle-rgb: rgb(230, 233, 239);
--ctp-latte-mantle-hsl: hsl(220, 22%, 92%);
--ctp-frappe-mantle: #292c3c;
--ctp-frappe-mantle-rgb: rgb(41, 44, 60);
--ctp-frappe-mantle-hsl: hsl(231, 19%, 20%);
--ctp-macchiato-mantle: #1e2030;
--ctp-macchiato-mantle-rgb: rgb(30, 32, 48);
--ctp-macchiato-mantle-hsl: hsl(233, 23%, 15%);
--ctp-mocha-mantle: #181825;
--ctp-mocha-mantle-rgb: rgb(24, 24, 37);
--ctp-mocha-mantle-hsl: hsl(240, 21%, 12%);
--ctp-latte-crust: #dce0e8;
--ctp-latte-crust-rgb: rgb(220, 224, 232);
--ctp-latte-crust-hsl: hsl(220, 21%, 89%);
--ctp-frappe-crust: #232634;
--ctp-frappe-crust-rgb: rgb(35, 38, 52);
--ctp-frappe-crust-hsl: hsl(229, 20%, 17%);
--ctp-macchiato-crust: #181926;
--ctp-macchiato-crust-rgb: rgb(24, 25, 38);
--ctp-macchiato-crust-hsl: hsl(236, 23%, 12%);
--ctp-mocha-crust: #11111b;
--ctp-mocha-crust-rgb: rgb(17, 17, 27);
--ctp-mocha-crust-hsl: hsl(240, 23%, 9%);
/* Catppuccin theme colors */
--foreground-dim: var(--ctp-mocha-overlay1);
--foreground: var(--ctp-mocha-text);
--foreground-bright: var(--ctp-latte-base);
--background-0: var(--ctp-mocha-crust);
--background-1: var(--ctp-mocha-mantle);
--background-2: var(--ctp-mocha-base);
--nav: var(--ctp-mocha-surface0);
--button-text: white;
--previous-button: var(--ctp-frappe-red);
--next-button: var(--ctp-frappe-blue);
--action-button: var(--ctp-latte-maroon);
--action-button-shadow: var(--ctp-mocha-maroon);
--button: var(--ctp-mocha-surface1);
--button-hover: var(--ctp-mocha-surface2);
--button-click: var(--ctp-mocha-surface0);
--adjective: var(--ctp-mocha-red);
--noun: var(--ctp-mocha-green);
--verb: var(--ctp-mocha-blue);
--particle: var(--ctp-mocha-yellow);
--phrase: var(--ctp-mocha-peach);
--adverb: var(--ctp-mocha-teal);
--link: var(--ctp-mocha-rosewater);
--heading-rule-color: var(--ctp-mocha-surface0);
--figure: var(--ctp-mocha-surface0);
}
html, body {
overflow-x: hidden;
}
body {
position: relative;
font-family: 'Nunito', 'K Gothic', sans-serif;
margin: 0;
width: 100%;
--background-0: var(--ctp-mocha-crust);
height: 100vh;
display: flex;
flex-direction: column;
overflow: hidden;
font-size: 1.25em;
overflow: hidden;
color: var(--foreground);
/* background: var(--gb-lm-fg1); */
}
h1, h2, h3, h4, h5, h6, b, strong, th {
color: var(--foreground-bright);
}
#content {
display: flex;
width: 100%;
height: 100%;
}
.no-mobile {
display: none;
}
@media only screen and (max-width: 768px) {
#content {
display: block;
overflow: auto;
}
#content > div {
width: 100% !important;
}
.mobile {
display: none;
}
.no-mobile {
display: inline;
}
}
#content > div {
display: flex;
flex-direction: column;
box-sizing: border-box;
}
#content > div:first-child {
background: var(--background-0);
width: 40em;
}
#content > div:last-child {
background: var(--background-1);
width: 100%;
}
#content > div {
--padding: 1rem;
padding: var(--padding);
overflow-x: hidden;
overflow-y: auto;
box-sizing: border-box;
}
nav {
position: sticky;
top: -1rem;
margin-left: calc(-1 * var(--padding));
margin-right: calc(-1 * var(--padding));
margin-top: calc(-1 * var(--padding));
font-family: 'Patrick Hand';
font-size: 1.5em;
background-color: var(--nav);
box-shadow: 0 4px 4px 0 rgba(0,0,0,.25);
z-index: 999;
display: inline;
text-align: center;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
nav form {
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
pointer-events: none;
}
nav * {
pointer-events: auto;
}
.nav-button {
border: none;
cursor: pointer;
color: var(--button-text);
padding-left: 0.25em;
padding-right: 0.25em;
/* display: flex;
align-items: center;
justify-content: center; */
border: none !important;
}
.nav-button:first-child {
background: var(--previous-button);
border-top-right-radius: 0.25em;
border-bottom-right-radius: 0.25em;
box-shadow: 4px 0 var(--gb-dm-bg0-hard);
float: left;
}
.nav-button:last-child {
background: var(--next-button);
border-top-left-radius: 0.25em;
border-bottom-left-radius: 0.25em;
box-shadow: -4px 0 var(--gb-dm-bg0-hard);
float: right;
}
figure a {
color: #5865F2;
}
#submissions {
line-height: 0;
column-count: 1;
--gap: 0.625rem;
column-gap: var(--gap);
}
figure {
background: var(--figure);
padding: var(--gap);
padding-bottom: 0;
margin: 0;
margin-bottom: var(--gap);
overflow: hidden;
display: inline-block;
width: 100%;
box-sizing: border-box;
}
figcaption {
text-align: center;
font-size: 0.75em;
line-height: 2em;
}
figcaption span {
opacity: 0.625;
}
figure, figure img:not(.svg-inline) {
border-radius: 0.25em;
}
figure img:not(.svg-inline) {
width: 100%;
box-sizing: border-box;
border: none !important;
}
figure a {
border: none !important;
}
#submissions div {
overflow: hidden;
}
@media (min-width: 768px) {
#mascot {
display: block !important;
}
#submissions {
column-count: 2;
}
}
@media (min-width: 1280px) {
.challenge {
flex-direction: row;
}
#submissions {
column-count: 3;
}
nav {
background-position: center;
}
}
.adjective {
color: var(--adjective);
}
.noun {
color: var(--noun);
}
.verb {
color: var(--verb);
}
.particle {
color: var(--particle);
}
.phrase {
color: var(--phrase);
}
.adverb {
color: var(--adverb);
}
a {
text-decoration: none;
color: var(--link);
}
a:hover, a:hover .underline {
border-bottom: 2px solid;
}
a:hover img:not(.svg-inline) {
filter: brightness(1.25);
}
#challenge {
background: var(--background-2);
margin-left: calc(-1 * var(--padding));
margin-right: calc(-1 * var(--padding));
flex-shrink: 0;
overflow-x: scroll;
overflow-y: hidden;
transition: 0.75s;
font-size: 1.25em;
font-weight: normal;
font-style: normal;
white-space: nowrap;
}
#challenge > div {
padding: var(--padding);
}
.vertical {
writing-mode: vertical-rl;
}
.vertical a:hover {
border: none;
border-left: 2px solid;
}
#challenge p {
white-space: nowrap;
}
#challenge > div {
padding: var(--padding);
}
#challenge, h1, h2, h3, h4, h5, h6 {
font-family: 'Patrick Hand', 'K Gothic', sans-serif;
}
header h1, header h2, header h3, header h4, header h5, header h6 {
margin: 0;
}
header {
padding-bottom: 8px;
margin-bottom: 8px;
}
header, :not(header) > h1, :not(header) > h2, :not(header) > h3, :not(header) > h4, :not(header) > h5, :not(header) > h6 {
border-bottom: 2px solid var(--heading-rule-color);
}
header ruby {
ruby-position: under;
}
header rt {
margin-top: -0.5em;
}
#challenge header {
border-color: var(--background-0);
}
#challenge-container {
display: flex;
justify-content: space-between;
overflow: auto;
margin-left: -0.75em;
margin-right: -0.75em;
margin-bottom: -0.75em;
padding: 0.75em;
}
#challenge-horizontal {
display: flex;
flex-direction: column;
gap: 1em;
}
#challenge div {
counter-reset: section;
}
#challenge p {
margin: 0;
}
#challenge rt, h1 rt, h2 rt, h3 rt, h4 rt, h5 rt, h6 rt {
margin-bottom: -0.5em;
}
#challenge p::before {
counter-increment: section;
content: counter(section);
text-orientation: upright;
color: var(--foreground-dim);
margin-right: 0.25em;
}
#challenge-horizontal, #challenge-kanji {
flex-shrink: 0;
}
#challenge-english {
max-width: 15em;
}
.content {
margin-bottom: 1em;
}
.gray, footer, small {
color: var(--foreground-dim);
}
p, ul, ol {
line-height: 1.75;
}
#mascot {
display: none;
position: absolute;
right: 1em;
bottom: 1em;
z-index: 999;
pointer-events: none;
transition: 1s;
--width: min(12.5em, 40vw);
width: var(--width);
}
.hidden {
right: calc(-0.5 * var(--width)) !important;
opacity: 0.5;
}
.action-button {
text-align: center;
}
button {
height: 2em;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.75em;
padding-left: 0.5em;
padding-right: 0.5em;
background: var(--button);
border-radius: 0.25em;
}
button:hover {
background: var(--button-hover);
}
button:active {
background: var(--button-click);
}
button, .action-button a {
display: inline-flex;
border: none !important;
cursor: pointer;
font-weight: bold;
color: var(--button-text);
transition: 0.5s;
}
.action-button a {
font-size: 1em;
background: var(--action-button);
}
.action-button span {
padding-left: 1em;
padding-right: 1em;
align-items: center;
justify-content: center;
line-height: 64px;
}
.action-button img {
height: 64px;
}
.action-button a:hover {
box-shadow: 4px 4px var(--action-button-shadow);
}
#content img:not(.svg-inline) {
max-width: 100%;
background: var(--background-1);
border-radius: 0.15em;
display: block;
margin: auto;
}
#cc {
text-align: center;
}
#cc > a {
border: none;
}
#cc > a > img {
display: inline !important;
}
#content > div:last-child img:not(.svg-inline) {
background: var(--background-2) !important;
}
h1:first-child {
margin-top: 0;
}
#leaderboard {
margin: auto;
}
#leaderboard td {
padding: 0.125em;
}
#leaderboard a {
color: var(--foreground);
}
#leaderboard td:first-child {
text-align: right;
}
#leaderboard img {
width: 1.5em;
height: 1.5em;
margin: 0;
display: inline !important;
vertical-align: bottom;
}
a.no-underline:hover {
border: none;
}
.muted, #leaderboard td:first-child, .clickable-icon {
color: var(--foreground-dim);
}
.clickable-icon:hover {
border: none;
}
footer img {
display: none;
}
@media (max-width: 400px) {
#leaderboard td:first-child {
display: none;
}
}
input[type=number] {
font-family: inherit;
font-size: inherit;
color: inherit;
background: var(--background-2);
border-radius: 0.25em;
width: 2em;
border: none;
text-align: center;
}
input[type=number]:focus {
outline: 2px solid var(--foreground-dim) !important;
}
nav input[type=number] {
-moz-appearance: textfield;
}
nav input::-webkit-outer-spin-button,
nav input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.svg-inline {
height: 1em;
vertical-align: -0.125em;
}
hr {
border: 1px solid var(--foreground-dim);
}

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 127.14 96.36"><defs><style>.cls-1{fill:#5865f2;}</style></defs><g id="图层_2" data-name="图层 2"><g id="Discord_Logos" data-name="Discord Logos"><g id="Discord_Logo_-_Large_-_White" data-name="Discord Logo - Large - White"><path class="cls-1" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 988 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 180 KiB

@ -1,98 +0,0 @@
const kyujitai = [["万","萬"],["与","與"],["両","兩"],["並","竝"],["乗","乘"],["乱","亂"],["争","爭"],["亜","亞"],["仏","佛"],["仮","假"],["会","會"],["伝","傳"],["余","餘"],["体","體"],["価","價"],["併","倂"],["倹","儉"],["偽","僞"],["児","兒"],["党","黨"],["内","內"],["円","圓"],["冊","册"],["写","寫"],["冴","冱"],["処","處"],["剣","劍"],["剤","劑"],["剰","剩"],["励","勵"],["労","勞"],["効","效"],["勅","敕"],["勧","勸"],["勲","勳"],["区","區"],["医","醫"],["即","卽"],["巻","卷"],["参","參"],["収","收"],["双","雙"],["叙","敍"],["号","號"],["台","臺"],["嘱","囑"],["団","團"],["囲","圍"],["図","圖"],["国","國"],["圏","圈"],["圧","壓"],["尭","堯"],["堕","墮"],["塁","壘"],["塩","鹽"],["増","增"],["壊","壞"],["壌","壤"],["壮","壯"],["壱","壹"],["売","賣"],["声","聲"],["変","變"],["奥","奧"],["奨","奬"],["姫","姬"],["婿","壻"],["嬢","孃"],["学","學"],["実","實"],["宝","寶"],["寛","寬"],["寝","寢"],["寿","壽"],["対","對"],["専","專"],["将","將"],["当","當"],["尚","尙"],["単","單"],["巣","巢"],["営","營"],["厳","嚴"],["尽","盡"],["届","屆"],["属","屬"],["岳","嶽"],["峡","峽"],["巌","巖"],["帯","帶"],["帰","歸"],["広","廣"],["庁","廳"],["廃","廢"],["弐","貳"],["弥","彌"],["弾","彈"],["彦","彥"],["径","徑"],["従","從"],["徴","徵"],["徳","德"],["応","應"],["恒","恆"],["恵","惠"],["悩","惱"],["恋","戀"],["悪","惡"],["悦","悅"],["惨","慘"],["慎","愼"],["懐","懷"],["戦","戰"],["戯","戲"],["戸","戶"],["戻","戾"],["払","拂"],["抜","拔"],["択","擇"],["拝","拜"],["担","擔"],["拠","據"],["拡","擴"],["挟","挾"],["挿","插"],["捜","搜"],["挙","擧"],["掲","揭"],["揺","搖"],["摂","攝"],["撃","擊"],["教","敎"],["数","數"],["断","斷"],["旧","舊"],["昼","晝"],["晋","晉"],["晩","晚"],["暁","曉"],["暦","曆"],["来","來"],["条","條"],["枢","樞"],["栄","榮"],["桟","棧"],["桜","櫻"],["検","檢"],["楽","樂"],["楼","樓"],["槙","槇"],["様","樣"],["概","槪"],["横","橫"],["権","權"],["欠","缺"],["欧","歐"],["歓","歡"],["歩","步"],["歴","歷"],["残","殘"],["殴","毆"],["殻","殼"],["毎","每"],["気","氣"],["没","沒"],["沢","澤"],["浄","淨"],["浅","淺"],["涙","淚"],["浜","濱"],["渉","涉"],["渇","渴"],["渓","溪"],["渋","澁"],["済","濟"],["清","淸"],["温","溫"],["満","滿"],["湿","濕"],["湾","灣"],["滞","滯"],["滝","瀧"],["潜","潛"],["瀬","瀨"],["灯","燈"],["炉","爐"],["為","爲"],["点","點"],["焼","燒"],["犠","犧"],["状","狀"],["狭","狹"],["独","獨"],["猟","獵"],["献","獻"],["獣","獸"],["瑶","瑤"],["瓶","甁"],["産","產"],["画","畫"],["畳","疊"],["痴","癡"],["発","發"],["盗","盜"],["県","縣"],["真","眞"],["研","硏"],["砕","碎"],["礼","禮"],["禄","祿"],["禅","禪"],["秘","祕"],["称","稱"],["税","稅"],["稲","稻"],["穂","穗"],["穏","穩"],["穣","穰"],["窃","竊"],["粋","粹"],["糸","絲"],["経","經"],["絵","繪"],["続","續"],["継","繼"],["緒","緖"],["緑","綠"],["総","總"],["縄","繩"],["縁","緣"],["縦","縱"],["繊","纖"],["缶","罐"],["聡","聰"],["聴","聽"],["粛","肅"],["胆","膽"],["脱","脫"],["脳","腦"],["臓","臟"],["舎","舍"],["舗","舖"],["艶","艷"],["芸","藝"],["茎","莖"],["荘","莊"],["蔵","藏"],["薫","薰"],["薬","藥"],["虚","虛"],["虫","蟲"],["蚕","蠶"],["蛍","螢"],["蛮","蠻"],["衛","衞"],["装","裝"],["褒","襃"],["覇","霸"],["覚","覺"],["覧","覽"],["観","觀"],["触","觸"],["訳","譯"],["証","證"],["誉","譽"],["読","讀"],["謡","謠"],["譲","讓"],["豊","豐"],["賛","贊"],["践","踐"],["転","轉"],["軽","輕"],["辞","辭"],["辺","邊"],["逓","遞"],["遥","遙"],["遅","遲"],["郎","郞"],["郷","鄕"],["酔","醉"],["醸","釀"],["釈","釋"],["鉄","鐵"],["鉱","鑛"],["銭","錢"],["鋭","銳"],["鋳","鑄"],["錬","鍊"],["録","錄"],["鎮","鎭"],["関","關"],["闘","鬪"],["陥","陷"],["険","險"],["随","隨"],["隠","隱"],["隣","鄰"],["隷","隸"],["雑","雜"],["霊","靈"],["青","靑"],["静","靜"],["頼","賴"],["顔","顏"],["顕","顯"],["飲","飮"],["餅","餠"],["駅","驛"],["駆","驅"],["騒","騷"],["験","驗"],["髄","髓"],["髪","髮"],["竜","龍"],["鶏","鷄"],["麦","麥"],["黄","黃"],["黒","黑"],["黙","默"],["斉","齊"],["斎","齋"],["歯","齒"],["齢","齡"],["亀","龜"],["告","吿"],["屡","屢"],["湾","灣"],["亘","亙"],["凜","凛"],["刃","刄"],["呉","吳"],["回","囘"],["妊","姙"],["娯","娛"],["強","强"],["携","攜"],["曽","曾"],["歳","歲"],["粘","黏"],["糾","糺"],["絶","絕"],["萌","萠"],["説","說"],["祷","禱"],["鎌","鐮"],["閲","閱"],["麺","麵"],["祢","禰"]];
const challenge = document.getElementById("challenge");
const defaultHeight = challenge.scrollHeight + "px";
let verticalHeight;
challenge.style.height = defaultHeight;
let texts = [];
const vocab = document.getElementById("challenge-vocab");
if (vocab) texts.push(vocab);
const kanji = document.getElementById("challenge-kanji");
if (kanji) texts.push(kanji);
const rubies = document.getElementsByTagName("ruby");
let kyujitaiConvertable = [];
let kyujitaiConvertableLinks = [];
for (let i = 0; i < rubies.length; i++) {
const ruby = rubies[i];
let shinjitai = ruby.firstChild.textContent;
for (let j = 0; j < kyujitai.length; j++) {
const pair = kyujitai[j];
if (shinjitai !== pair[0]) {
continue;
}
ruby.shinjitai = pair[0];
ruby.kyujitai = pair[1];
const encodedURIComponent = encodeURIComponent(pair[0]);
if (ruby.parentNode.nodeName === "A" && ruby.parentNode.href.toUpperCase().includes(encodedURIComponent) && ruby.parentNode.href.endsWith("%23kanji")) {
ruby.parentNode.shinjitaiHref = ruby.parentNode.href;
ruby.parentNode.kyujitaiHref = ruby.parentNode.href.replace(encodedURIComponent, encodeURIComponent(pair[1]));
kyujitaiConvertableLinks.push(ruby.parentNode);
}
kyujitaiConvertable.push(ruby);
break;
};
}
const kyujitaiButton = document.getElementById("kyujitai");
if (kyujitaiConvertable.length === 0) {
kyujitaiButton.parentNode.removeChild(kyujitaiButton);
const kyujitaiInfo = document.getElementById("kyujitai-info");
kyujitaiInfo.parentNode.removeChild(kyujitaiInfo);
} else {
document.getElementById("kyujitai").addEventListener("click", function() {
let kyujitai = false;
if (this.innerHTML === "旧字体") {
kyujitai = true;
this.innerHTML = "新字体";
} else {
this.innerHTML = "旧字体";
}
kyujitaiConvertable.forEach(ruby => ruby.firstChild.textContent = kyujitai ? ruby.kyujitai : ruby.shinjitai);
kyujitaiConvertableLinks.forEach(link => link.href = kyujitai ? link.kyujitaiHref : link.shinjitaiHref);
});
}
const directionButton = document.getElementById("direction");
directionButton.addEventListener("click", function() {
if (this.innerHTML === "↕") {
texts.forEach(text => text.classList.add("vertical"));
this.innerHTML = "↔";
challenge.style.height = challenge.scrollHeight + "px";
verticalHeight = challenge.style.height;
} else {
texts.forEach(text => text.classList.remove("vertical"));
this.innerHTML = "↕";
challenge.style.height = defaultHeight;
}
});
directionButton.click();
const englishButton = document.getElementById("english");
const challengeEnglish = document.getElementById("challenge-english");
if (englishButton) {
englishButton.addEventListener("click", function() {
if (this.innerHTML == "Show translation") {
challengeEnglish.style.removeProperty("display");
this.innerHTML = "Hide translation";
challenge.style.height = challenge.scrollHeight + "px";
} else {
challengeEnglish.style.display = "none";
this.innerHTML = "Show translation";
challenge.style.height = directionButton.innerHTML == "↕" ? defaultHeight : verticalHeight;
}
});
}
document.getElementById("highlight").addEventListener("click", function() {
if (this.innerHTML === "漢字") {
vocab.style.display = "none";
kanji.style.removeProperty("display");
this.innerHTML = "単語";
} else {
kanji.style.display = "none";
vocab.style.removeProperty("display");
this.innerHTML = "漢字";
}
});

@ -1,14 +0,0 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "tegakituesday.com"
license = "UNLICENSED"
description = "The theme for Tegaki Tuesday."
homepage = "http://tegakituesday.com/"
tags = []
features = []
min_version = "0.41.0"
[author]
name = "ElnuDev"
homepage = "https://elnu.com"
Loading…
Cancel
Save