From 860f4cf8a2f02b378588e7fa9267fef85d1ffd28 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Fri, 8 Apr 2022 17:55:22 +0530 Subject: [PATCH] feat: basic styling with tmp logo --- .gitignore | 1 + content/about/index.md | 96 +++++++++++++++++ content/contact/index.md | 21 ++++ content/privacy-policy/index.md | 6 ++ sass/blog/main.scss | 76 +++++++++++++ sass/blog/mobile.scss | 9 ++ sass/components/_link.scss | 4 + sass/components/_page.scss | 95 +++++++++++++++++ sass/footer/main.scss | 79 ++++++++++++++ sass/footer/mobile.scss | 52 +++++++++ sass/home/main.scss | 41 +++++++ sass/home/mobile.scss | 8 ++ sass/main.scss | 73 +++++++++++++ sass/mobile.scss | 9 ++ sass/nav/main.scss | 71 +++++++++++++ sass/nav/mobile.scss | 121 +++++++++++++++++++++ sass/page/main.scss | 38 +++++++ sass/page/mobile.scss | 19 ++++ sass/tag/main.scss | 25 +++++ static/android-icon-144x144.png | Bin 0 -> 1578 bytes static/android-icon-192x192.png | Bin 0 -> 1477 bytes static/android-icon-36x36.png | Bin 0 -> 838 bytes static/android-icon-48x48.png | Bin 0 -> 912 bytes static/android-icon-72x72.png | Bin 0 -> 1003 bytes static/android-icon-96x96.png | Bin 0 -> 1155 bytes static/apple-icon-114x114.png | Bin 0 -> 1258 bytes static/apple-icon-120x120.png | Bin 0 -> 1328 bytes static/apple-icon-144x144.png | Bin 0 -> 1578 bytes static/apple-icon-152x152.png | Bin 0 -> 1673 bytes static/apple-icon-180x180.png | Bin 0 -> 2066 bytes static/apple-icon-57x57.png | Bin 0 -> 941 bytes static/apple-icon-60x60.png | Bin 0 -> 961 bytes static/apple-icon-72x72.png | Bin 0 -> 1003 bytes static/apple-icon-76x76.png | Bin 0 -> 1061 bytes static/apple-icon-precomposed.png | Bin 0 -> 1909 bytes static/apple-icon.png | Bin 0 -> 1909 bytes static/browserconfig.xml | 2 + static/favicon-16x16.png | Bin 0 -> 711 bytes static/favicon-32x32.png | Bin 0 -> 829 bytes static/favicon-96x96.png | Bin 0 -> 1155 bytes static/favicon.ico | Bin 0 -> 1150 bytes static/icons/email.svg | 1 + static/icons/file-text.svg | 1 + static/icons/github.svg | 1 + static/icons/matrix.svg | 1 + static/icons/rss.svg | 1 + static/manifest.json | 41 +++++++ static/ms-icon-144x144.png | Bin 0 -> 1578 bytes static/ms-icon-150x150.png | Bin 0 -> 1653 bytes static/ms-icon-310x310.png | Bin 0 -> 4156 bytes static/ms-icon-70x70.png | Bin 0 -> 1039 bytes static/tmp-logo.png | Bin 0 -> 3828 bytes templates/base.html | 35 ++++++ templates/card.html | 3 + templates/foo.html | 79 ++++++++++++++ templates/footer.html | 53 ++++++++++ templates/index.html | 32 ++++++ templates/macros.html | 170 ++++++++++++++++++++++++++++++ templates/nav.html | 30 ++++++ templates/page.html | 16 +++ 60 files changed, 1310 insertions(+) create mode 100644 content/about/index.md create mode 100644 content/contact/index.md create mode 100644 content/privacy-policy/index.md create mode 100644 sass/blog/main.scss create mode 100644 sass/blog/mobile.scss create mode 100644 sass/components/_link.scss create mode 100644 sass/components/_page.scss create mode 100644 sass/footer/main.scss create mode 100644 sass/footer/mobile.scss create mode 100644 sass/home/main.scss create mode 100644 sass/home/mobile.scss create mode 100644 sass/main.scss create mode 100644 sass/mobile.scss create mode 100644 sass/nav/main.scss create mode 100644 sass/nav/mobile.scss create mode 100644 sass/page/main.scss create mode 100644 sass/page/mobile.scss create mode 100644 sass/tag/main.scss create mode 100644 static/android-icon-144x144.png create mode 100644 static/android-icon-192x192.png create mode 100644 static/android-icon-36x36.png create mode 100644 static/android-icon-48x48.png create mode 100644 static/android-icon-72x72.png create mode 100644 static/android-icon-96x96.png create mode 100644 static/apple-icon-114x114.png create mode 100644 static/apple-icon-120x120.png create mode 100644 static/apple-icon-144x144.png create mode 100644 static/apple-icon-152x152.png create mode 100644 static/apple-icon-180x180.png create mode 100644 static/apple-icon-57x57.png create mode 100644 static/apple-icon-60x60.png create mode 100644 static/apple-icon-72x72.png create mode 100644 static/apple-icon-76x76.png create mode 100644 static/apple-icon-precomposed.png create mode 100644 static/apple-icon.png create mode 100644 static/browserconfig.xml create mode 100644 static/favicon-16x16.png create mode 100644 static/favicon-32x32.png create mode 100644 static/favicon-96x96.png create mode 100644 static/favicon.ico create mode 100644 static/icons/email.svg create mode 100644 static/icons/file-text.svg create mode 100644 static/icons/github.svg create mode 100644 static/icons/matrix.svg create mode 100644 static/icons/rss.svg create mode 100644 static/manifest.json create mode 100644 static/ms-icon-144x144.png create mode 100644 static/ms-icon-150x150.png create mode 100644 static/ms-icon-310x310.png create mode 100644 static/ms-icon-70x70.png create mode 100644 static/tmp-logo.png create mode 100644 templates/base.html create mode 100644 templates/card.html create mode 100644 templates/foo.html create mode 100644 templates/footer.html create mode 100644 templates/index.html create mode 100644 templates/macros.html create mode 100644 templates/nav.html create mode 100644 templates/page.html diff --git a/.gitignore b/.gitignore index 0320acb..8608f04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ public/ bin/ +tmp diff --git a/content/about/index.md b/content/about/index.md new file mode 100644 index 0000000..d035f8b --- /dev/null +++ b/content/about/index.md @@ -0,0 +1,96 @@ ++++ +title = "About" +description = "About" ++++ + +Hostea provides dedicated managed Gitea hosting, including CI/CD and +static pages. Upgrades are carefully tested and include security +updates. Each Gitea instance is monitored 24/7 and has backups. + +### You will want to rent a Gitea instance at Hostea if you are ... + +- Individual software developers or companies who need their own Gitea + instance with CI/CD and static pages but can't be bothered with + installation and maintenance. You want the freedom to download a + backup and seamlessly self-host it whenever you decide: no strings + attached. +- Organizations that want to resell Gitea hosting under their brand and + rent the infrastructure at a discounted price. You want the option to + run the Hostea infrastructure on your own hardware in the future and + seamlessly migrate your clients. + +### Committed to Free Software and Radical Transparency + +- Everything is public, there are no internal discussions, all financial + records are public down to the last cent +- Every piece of software is and will always be exclusively Free + Software so that it can be self-hosted by users and re-used by + competitors +- Private data (names, addresses, etc. ) is carefully protected and + destroyed as soon as possible + +### Hostea is operated by a collective of individuals and organizations + +The members of Hostea are like minded individuals and organizations who +share the same commitment to Free Software and transparency. They share +the Hostea income in proportion of their involvement which is recorded +in a publicly available spreadsheet for everyone to audit. + +The motivation for becoming a member of Hostea can be: + +- To refer the occasional customer to Hostea, knowing it has a vote to + influence where Hostea is going. +- To provide Gitea hosting to its clients under its own brand because it + is easier than setting up Hostea on their own hardware to do the same. + And knowing that when they want to do so it will be as easy as + possible. +- To make a living as a Free Software developer working on developing + and maintaining Hostea. The time logged working on Hostea will be + compensated with the income. +- To support the idea of a sustainable online service exclusively based + on Free Software (there are actually very few of them, it is a non + trivial problem to solve) and do nothing. In which case there won't be + any income distributed to the member. +- To free developers from centralized forges lock-in by providing a + reliable alternative and work on the Ansible playbooks to maintain + Hostea. In which case the member is entitled to a share of the income + in proportion of the time. + +### Truly self-hostable + +When self-hosting the development of a software project is difficult, it +is a theoretical possibility that has no practical use. The Gitea +project itself has been stuck on GitHub for many years. Hostea is +committed to provide a seamless migration path to self hosting. A +virtual machine to run the Gitea instance, including CI/CD and static +pages can be downloaded at any time. It can then be booted on premise or +in the cloud. + +The infrastructure as code running Hostea itself is published, +documented and tested so that it can also be used on premise. Either to +manage the virtual machine retrieved from Hostea, with the same user +panel, monitoring, backups etc. Or to run a public Gitea hosting service +identical to Hostea and become a competitor. + +### Interoperable with existing infrastructures + +Running Hostea with its integrated monitoring and backup system is an +interesting proposition: all in one. When it is deployed within an +existing infrastructure that has its own backup and monitoring setup, it +provides: + +- A monitoring endpoint to get a global health status (red/green) which + is an aggregation of the probes deployed to verify Gitea runs, + security updates have been applied, the latest upgrades are installed, + backups have been successfully created, communicates with the CI etc. +- A backup download endpoint to get a copy of the backups so they can be + stored in the existing backup system for safekeeping + +### Hostea is not ... + +- Hostea is not a shared Gitea hosting facility that can be used for free + such as Codeberg. It provides dedicated Gitea instances for a fee. +- Hostea is not a company with shareholders that make a passive income. + The income is redistributed to the people and organizations doing the + work. The workers are also empowered with every decision about Hostea, + either by consensus or by vote. diff --git a/content/contact/index.md b/content/contact/index.md new file mode 100644 index 0000000..cf52920 --- /dev/null +++ b/content/contact/index.md @@ -0,0 +1,21 @@ +--- +title: "Contact" +draft: false +--- + +## Matrix + +We have a public [Matrix +chatroom](https://matrix.to/#/#hostea:matrix.batsense.net) that we use +for instant messaging. + +## Forum + +We also have a [forum](https://forum.hostea.org/) that we use for +long-form discussions. + +## Source Code + +All Hostea software is 100% [Free +Software](https://www.gnu.org/philosophy/free-sw.en.html) and is hosted +on the [Hostea Gitea](https://gitea.hostea.org) diff --git a/content/privacy-policy/index.md b/content/privacy-policy/index.md new file mode 100644 index 0000000..1e01dcc --- /dev/null +++ b/content/privacy-policy/index.md @@ -0,0 +1,6 @@ +--- +title: "Privacy" +draft: false +--- + +TODO diff --git a/sass/blog/main.scss b/sass/blog/main.scss new file mode 100644 index 0000000..71d0712 --- /dev/null +++ b/sass/blog/main.scss @@ -0,0 +1,76 @@ +@import "../components/page"; +@import "../components/_link"; + +$std-trans: 0.3s; + +.blog__content { + @include md; + + p { + margin: 30px 0; + } +} + +.blog__container { + margin: auto; + max-width: 50%; +} + +.blog__list { + list-style: none; +} + +.blog__post-link, +.blog__post-link:visited { + text-decoration: none; + color: inherit; +} + +.blog__title { + margin: 35px 0; +} + +.blog__post-link { + display: block; +} + +.blog__post-item { + border-bottom: 1px dashed #333; + margin: 10px; + padding: 10px; +} + +.blog__post-item:hover { + background-color: lightgray; +} + +.blog__post-item:last-child { + border-bottom: none; +} + +.blog__post-description { + font-size: 0.9rem; + margin: 5px 0; +} + +.blog__post-tag { + font-size: 0.7rem; + font-family: monospace, monospace; +} + +.blog__post-tag:hover { + @include a_hover; +} + +.blog__post-meta { + font-size: 0.7rem; +} + +.blog__post-title { + font-size: 1.4rem; + font-weight: 550; +} + +.blog__post-tag-container { + margin: 0; +} diff --git a/sass/blog/mobile.scss b/sass/blog/mobile.scss new file mode 100644 index 0000000..3b43409 --- /dev/null +++ b/sass/blog/mobile.scss @@ -0,0 +1,9 @@ +@import "../components/page"; + +.blog__container { + max-width: 95%; +} + +.blog__content { + @include md_mobile; +} diff --git a/sass/components/_link.scss b/sass/components/_link.scss new file mode 100644 index 0000000..e957dba --- /dev/null +++ b/sass/components/_link.scss @@ -0,0 +1,4 @@ +@mixin a_hover { + color: rgb(0, 86, 179); + text-decoration: underline; +} diff --git a/sass/components/_page.scss b/sass/components/_page.scss new file mode 100644 index 0000000..60ff1d4 --- /dev/null +++ b/sass/components/_page.scss @@ -0,0 +1,95 @@ +@import "./_link.scss"; + +@mixin md { + img { + max-width: 100%; + display: block; + } + + video { + max-width: 100%; + display: block; + } + + li { + margin-left: 40px; + } + + a:hover { + @include a_hover; + } + + code { + word-wrap: break-word; + overflow-wrap: break-word; + } + + table { + border-collapse: collapse; + caption-side: bottom; + border-color: #e9ecef; + text-align: center; + width: 100%; + } + + table > thead { + vertical-align: bottom; + border-bottom: 1px solid #cdc8ca; + text-align: center; + } + + table { + th { + text-align: center; + } + td { + margin: auto; + padding: 10px; + border-bottom: 1px solid #edddd1; + } + } + + p, + h2, + h3 { + margin: 10px 0; + } + + pre { + padding: 10px 10px 10px 20px; + border-radius: 8px; + font-size: 0.95rem; + overflow: auto; + } + pre { + font-family: monospace, monospace; + font-display: auto; + font-size: 1em; + } +} + +@mixin md_mobile { + table { + overflow-x: scroll; + } + + table td { + padding: 5px; + } + + pre { + white-space: pre-wrap; + word-wrap: break-word; + } + + li { + margin-left: 25px; + } + + p, + h1, + h2, + h3 { + margin: 20px 0px; + } +} diff --git a/sass/footer/main.scss b/sass/footer/main.scss new file mode 100644 index 0000000..ae94403 --- /dev/null +++ b/sass/footer/main.scss @@ -0,0 +1,79 @@ +@import "../components/_link"; + +footer { + display: block; + color: #333; + font-size: 0.7rem; + padding: 0; + margin: 0; +} + +.footer__container { + width: 100%; + padding: 0; + justify-content: space-between; + margin: auto; + display: flex; + flex-direction: row; + overflow: hidden; +} + +@mixin footer__column-base { + list-style: none; + display: flex; + margin: auto 50px; + align-items: center; + flex: 2.5; +} + +.footer__column { + @include footer__column-base; +} + +.footer__column--center { + @include footer__column-base; + margin: auto; + flex-direction: column; + align-items: center; + flex: 2; +} + +.footer__column:last-child { + justify-content: flex-end; + a { + margin: 10px; + } +} + +.footer__link-container { + margin: 5px; +} + +.footer__link { + text-decoration: none; +} + +.license__link { + display: inline; +} + +.license__link:hover { + @include a_hover; +} + +.footer__column-divider, +.footer__column-divider--mobile-visible, +.footer__column-divider--mobile-only { + font-weight: 500; + opacity: 0.7; + margin: 0 5px; +} + +.footer__column-divider--mobile-only { + display: none; +} + +.footer__icon { + margin: auto 5px; + height: 20px; +} diff --git a/sass/footer/mobile.scss b/sass/footer/mobile.scss new file mode 100644 index 0000000..f6e0c1f --- /dev/null +++ b/sass/footer/mobile.scss @@ -0,0 +1,52 @@ +$footer-font-size: 0.44rem; + +footer { + font-size: $footer-font-size; +} + +.footer__container { + display: grid; + grid-template-rows: repeat(3, 100%); + align-items: center; + margin: auto; + justify-content: center; +} + +.footer__link { + font-size: 0.5rem; +} + +.license__conatiner, +.license__link { + text-align: center; +} + +@mixin footer__column-base { + margin: 0 auto; + display: flex; + padding: 0; +} + +.footer__column:first-child { + grid-row-start: 3; + flex-direction: row; +} + +.footer__column:last-child { + grid-row-start: 2; +} + +.footer__column { + @include footer__column-base; + align-self: flex-end; +} + +.footer__column--center { + @include footer__column-base; + align-self: flex-start; +} + +.footer__column-divider--mobile-only { + margin: 0 3px; + font-size: 9.9px; +} diff --git a/sass/home/main.scss b/sass/home/main.scss new file mode 100644 index 0000000..6013205 --- /dev/null +++ b/sass/home/main.scss @@ -0,0 +1,41 @@ +$heading-letter-spacing: 20px; +.index-banner__container { + width: 100%; + display: flex; + flex-direction: column; + //background-color: #d1875a; + background-color: #3c3c3c; + background-color: #58181f; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + min-height: 300px; +} + +.index-banner { + margin: auto; + display: flex; + flex-direction: column; +} + +.index-banner__title { + margin: auto; + font-style: none; + color: #fff; + letter-spacing: $heading-letter-spacing; + font-size: 3rem; + font-weight: 400; +} + +.index-banner__tagline { + margin: auto; + color: #fff; + font-size: 1.4rem; +} + +.index-banner__title-container { + display: flex; +} +.index-banner__logo { + width: 120px; + margin: auto; + border-radius: 20px; +} diff --git a/sass/home/mobile.scss b/sass/home/mobile.scss new file mode 100644 index 0000000..9351430 --- /dev/null +++ b/sass/home/mobile.scss @@ -0,0 +1,8 @@ +.home__container { + max-height: 100vh; + height: 100vh; +} + +.home__name { + font-size: 2rem; +} diff --git a/sass/main.scss b/sass/main.scss new file mode 100644 index 0000000..e4ed350 --- /dev/null +++ b/sass/main.scss @@ -0,0 +1,73 @@ +@import "./home/main"; +@import "./nav/main"; +@import "./footer/main"; +@import "./page/main"; +@import "./blog/main"; +@import "./tag/main"; + +* { + padding: 0; + margin: 0; + //font-family: "Inter UI", -apple-system, BlinkMacSystemFont, "Roboto", + // "Segoe UI", Helvetica, Arial, sans-serif; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; +} + +a { + text-decoration: none; +} + +a, +a:visited { + color: rgb(0, 86, 179); +} + +.base { + min-height: 100vh; + display: flex; + flex-direction: column; + width: 100%; +} + +.main__content-container { + display: flex; + flex-direction: column; + min-height: 100%; + justify-content: space-between; + flex: 2; +} + +p, +h1, +h2, +h3, +h4, +li, +ol, +ul { + color: #333; +} + +main { + width: 100%; +} + +blockquote { + border-left: 0.3em solid rgba(55, 55, 55, 0.4); + margin-bottom: 16px; + //padding-left: 20px; + padding: 0 1em; + color: #707070; + + p, + h1, + h2, + h3, + h4, + li, + ol, + ul { + color: inherit; + } +} diff --git a/sass/mobile.scss b/sass/mobile.scss new file mode 100644 index 0000000..b53d1fb --- /dev/null +++ b/sass/mobile.scss @@ -0,0 +1,9 @@ +@import "./home/mobile"; +@import "./nav/mobile"; +@import "./footer/mobile"; +@import "./page/mobile"; +@import "./blog/mobile"; + +header { + height: auto; +} diff --git a/sass/nav/main.scss b/sass/nav/main.scss new file mode 100644 index 0000000..1d3cabf --- /dev/null +++ b/sass/nav/main.scss @@ -0,0 +1,71 @@ +@import "../components/_link"; + +.nav__container { + display: flex; + flex-direction: row; + + box-sizing: border-box; + width: 100%; + padding-top: 5px; +} + +.nav__home-btn { + font-weight: bold; +// font-family: monospace, monospace; + margin: auto; + margin-left: -10px; +} + +.nav__hamburger-menu { + display: none; +} + +.nav__spacer { + flex: 3; + margin: auto; +} + +.nav__logo-container { + display: inline-flex; + text-decoration: none; +} + +.nav__logo-container:hover { + @include a_hover; +} + +.nav__toggle { + display: none; +} + +.nav__logo { + display: inline-flex; + margin: auto; + padding: 5px; + width: 40px; +} + +.nav__link-group { + list-style: none; + display: flex; + flex-direction: row; + align-items: center; + align-self: center; + margin: auto; + text-align: center; +} + +.nav__link-container { + display: flex; + padding: 10px; + height: 100%; + margin: auto; +} + +.nav__link { + text-decoration: none; +} + +.nav__link:hover { + @include a_hover; +} diff --git a/sass/nav/mobile.scss b/sass/nav/mobile.scss new file mode 100644 index 0000000..8e1302d --- /dev/null +++ b/sass/nav/mobile.scss @@ -0,0 +1,121 @@ +//@import '../_vars'; + +$hamburger-menu-animation: 0.4s ease-out; +$nav__hamburger-inner-height: 1.3px; + +.nav__container { + flex-direction: column; +} + +.nav__header { + display: flex; + flex-direction: row; + min-width: 100%; + justify-content: space-between; +} + +.nav__link-group { + position: sticky; + flex-direction: column; + margin: auto; + align-items: center; + width: 100%; + // background-color: $light-blue; +} + +.nav__link-container { + border-bottom: 1px dashed rgba(55, 55, 55, 0.4); + width: 70%; +} + +.nav__link-container:last-child { + border-bottom: none; +} + +.nav__link { + margin: auto; +} + +.nav__hamburger-menu { + display: inline-block; + width: 50px; + height: 50px; +} + +.nav__spacer { + display: none; +} + +.nav__toggle:not(:checked) ~ .nav__link-group { + max-height: 0; + transition: max-height $hamburger-menu-animation; + overflow: hidden; +} + +.nav__toggle:checked ~ .nav__link-group { + max-height: 500px; + transition: max-height $hamburger-menu-animation; +} + +.nav__toggle:checked ~ .nav__header { + .nav__hamburger-inner::after { + width: 24px; + bottom: $nav__hamburger-inner-height; + transform: rotate(-90deg); + transition: bottom 0.1s ease-out, + transform 0.22s cubic-bezier(0.215, 0.61, 0.355, 1) 0.12s, + width 0.1s ease-out; + } + + .nav__hamburger-inner::before { + top: 0; + opacity: 0; + transition: top 0.1s ease-out, opacity 0.1s ease-out 0.12s; + } + + .nav__hamburger-inner { + transform: rotate(225deg); + transition-delay: 0.12s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } +} + +.nav__hamburger-inner::after { + bottom: -7px; + transition: bottom 0.1s ease-in 0.25s, + transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19), + width 0.1s ease-in 0.25s; +} + +.nav__hamburger-inner::after, +.nav__hamburger-inner::before { + content: ""; + display: block; +} + +.nav__hamburger-inner::before { + top: -7px; + transition: top 0.1s ease-in 0.25s, opacity 0.1s ease-in; +} + +.nav__hamburger-inner { + top: 50%; + margin: auto; + transition-duration: 0.22s; + transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); +} + +.nav__hamburger-inner, +.nav__hamburger-inner::after, +.nav__hamburger-inner::before { + width: 24px; + height: $nav__hamburger-inner-height; + position: relative; + // background: $dark-black; + background: #000; +} + +.nav__hamburger-menu, +.nav__hamburger-inner { + display: block; +} diff --git a/sass/page/main.scss b/sass/page/main.scss new file mode 100644 index 0000000..d570b66 --- /dev/null +++ b/sass/page/main.scss @@ -0,0 +1,38 @@ +@import '../components/_page.scss'; +@import '../components/_link.scss'; + +.page__container { + width: 50%; + margin: auto; + padding: 50px 0; +} + +.page__group { + display: flex; + flex-direction: column; +} + +.page__group-title { + margin: 20px auto; +} + +.page__group-content { + display: flex; + flex-direction: column; +} + +.page__group-content { + @include md; +} + +.page__preview-banner { + width: 10%; + height: #{'min(250px, 50vh)'}; + margin: 20px auto; +} + +.page__banner { + width: 100%; + height: #{'max(450px, 50vh)'}; + margin: 20px auto; +} diff --git a/sass/page/mobile.scss b/sass/page/mobile.scss new file mode 100644 index 0000000..6e4f982 --- /dev/null +++ b/sass/page/mobile.scss @@ -0,0 +1,19 @@ +@import '../components/_page.scss'; + +.page__container { + width: 85%; +} + +.page__group-content { + @include md_mobile; +} + +.page__banner { + height: auto; +} + +.page__group-title { + margin: auto; + margin-top: 0px; + margin-bottom: 10px; +} diff --git a/sass/tag/main.scss b/sass/tag/main.scss new file mode 100644 index 0000000..157917f --- /dev/null +++ b/sass/tag/main.scss @@ -0,0 +1,25 @@ +@import "../components/page"; + +$std-trans: 0.3s; + +.tag__item-link, +.tag__item-link:visited { + text-decoration: none; +} + +.tag__item-link { + display: flex; + align-items: center; +} + + +.tag__item { + border-bottom: 1px dashed #333; + margin: 10px; + padding: 10px; +} +.tag__item-title { + font-size: 1.4rem; + font-weight: 550; + flex: 2; +} diff --git a/static/android-icon-144x144.png b/static/android-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6c54173af9ef82e341ce50b0985122e80c881d GIT binary patch literal 1578 zcmZ{kdpOit7{`xGE|u_5Bs48H*_avqHZwmmGcFl18h2V^jJeU6!H7tsp~PyDR8L7m zgjPh#%4Igx(4sa{Q3`Etjmx9mBCR_m<> z0H`^W9Xt@5wLDai4`?=T3`LA0i$oy-P?fo6fwl_qQFO8g1%UW(0Z2*#U>=!D8U-K* z1HgDN0Pr~gbohC<-EEM7e29ya16WGU?2sUyvcQ?*sQgAzWwoL9(o8iXuF&i3K=O*~ zll29WJ>B({rxVU}zv&R-uO0UDX{N@HsTVBX33IQBH!UQjP*MIxx*x*Agr&-9&8e6& zbJMZAYqy(~mUdXWoGr`N_%tD$<(o*!;S ztVw-S{53QD zsas=icMO(a^v{+mk~G`0ugoa6Glovp?JahbhIM^3pF1_;@`G5TM5rzERmg%XnFQ>{WA+ff6x1q7mgFB5rK8eNLx8x1YNzhh5n`-eHFMZR5lRG|wXHgOlpG$Y!di;lfs@ za@C61aq&m~s;_Dw2Ti6tWa^h@thgcg?TGl)LI+pNc-TU`;(epl~ z69WP@#;1*HI8(YxyBI`^aGMRS=9NZg;aVE6rSQ5@vh7qBWcQndkkh7FJ+%Af>tmkQ zLz(AgMP(z?_9qFBbu$6qwEa04*&c7uo}5MVeKuP;>`9tzx{|Ko+`36-YW#g=bxfA; zIz3@z9cIT1-FxmL++txyqT{Vpdk^Vc^-#|p$~NqYK2qe5=6Kdsc)cjTbDnxdXo}*- zMK$(}^%bdiUl-s`TFe(UYktTVOl>D5OQWAPusllWYSO19J(>G4@xaNd@-!@ElKTFQ zZg1DyxMFK)pqI^ZrO&FD4TpsX%bvILmdCy{FHzntGI)qn02{MpwY z1*4Y~7UkiJvh~3s1Et8NHxW4c2|{TC2277)AO=`sEG^A3kU0kDg~h--FfbPP9R>qq zF!r0@x&J4D%M0Z&5B-0FrJbt`NkA=Eh~_Z`v9u@#U<(BNXc&#=aA_76VCt`JG;|`wr`P;&x(+@hcjSu4lt0dqqz}+13VU*Nju1)^CF_r z|F#^B$6=XPp%9aa$I`4Ix>bl3gs}{PAbN-;1Ti6;1(IQbtS@e2;3HB2I6JyIRM-WJ F{sxYYf29Bb literal 0 HcmV?d00001 diff --git a/static/android-icon-192x192.png b/static/android-icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..c189bedd5d0c177e326c76056c1893fc76f3a67d GIT binary patch literal 1477 zcma)4X*kpg9RAM?8Hz3Uv6dxAgQ18t(>h`^C^so%#xa#*mJls6)TEiov6CxHhKR|= z?r0t3n$5Uo92t*m7$jHa7)O{Tw!ZAQp56C(-uHdp_xI)Z;U&3VI43QoDg^+5G|Iuw z{j;;a5c*kwm|D{@01$tOva|7wHt&Rt^{{ z`Gj_}NnzATD%e><98!mDc(%vLK6O2;5n*s=g|vD;I;Z1ANC>*Wtu;;);$V?s9}&!3 z+t9bx8~wwX&9}Ij4aLs5!(2waJxA#S3)F6X*6HUD0<`=%bnO6%3xgE2i6Pg_)1t?u zZO~sLJ2iUhcoihV&ye{;fW*aNg^yl)j2iy5h&$(LfvH}e%u=6-{OEOZeU~YZZk#5; zj6<7h5N;Cj1xVz`dU#Ojhz+sJqVqX^Wf>7}X4-#GTH}4<+h)pqd3|m$CVZ#88MD`Y zUr|G9YNmsw63>L~-ZBpvQr9TtxTGQQ^ZBm|3z}TI%U)Z`D*d*%U>9(JS_rB9aO$CC znianbTG8_6a>SW+c#MFg+f3Q!PU3Y;yJvT|+KhE0NS3xl6)Zf_uDJ%)lPDVQLVqV6 z>3h>Pf8R0d97s4%J8y2UTM%<^-WILAl2NZ5btSRR$q-mYet5K0U@w3fnC>MIgB6W_ z&ZrPD`$24Mr4+tJS@3-&FSbfNNut^YXLYQe4aUYN2zlm$;_$g`xEgNERW0I9F)*`@ zV3ZD5^i;NPiA_Qj1#9RVe|4)aP%=CZ2qB42`?NiV^<9L%~(siesg0ssWSEl009 z2{IUaYbiFmBH2GKfm=`Q3)?7Q(`{ybNPJl&sjY&YgM7M%QDyXYxyNVaN>&Yg{fmDu z*8RXnf^g$TmKZh%#_DvJWNj9McTId`xx&XV)+FU9{Xmtx0Y+=Sa8&{~Md`pKShNE7@=L=UCB>dt=;<^qflgi7UT0JhotddADIQGUW|X2E z&dmc3OHu`bc0EQ-JI5NY)@i$J-Skb{@^(NQUTRfWJQk!c&x+nH5SSYuE$b=iJrbcY zql;;t;#F(1+h`4GWE<}BQV$(@R)A>gC}`D|B+*m% zv|C?hS$Ufo?w6a;@iQ$+^z6W)*<6afg`TuC8b#N)EFz*9?7t1#!5$iAj85HVCr4!7 zBS>z983=3CL&gQ_O6Wgyje6|4({h9ir{EpMG!M%hTBMXE6$<*pl=*T4!IP|&qS?NM z@sMR=RQpgaNo_LNQHJ5J1VkMKnBsr{Ou&PzYXRD2;I$F3p!nbQC&-z1@PWR=Kh}NO N4a)w4U8OBH`5(4tsjL71 literal 0 HcmV?d00001 diff --git a/static/android-icon-36x36.png b/static/android-icon-36x36.png new file mode 100644 index 0000000000000000000000000000000000000000..a3aee545d1d18e6592549b51765bb43ec4c5eb18 GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>`OBp8llA9n##Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4D|kDF3}LZ3Wc978NlC;#wgNsw66_3zCL+j>TcGjoeS|Cf_Uzjw#l zqpR-x7xCl-7ACXJUoQU_XX|XX^qF(js;3wU-=&_T+#~_a9oq8RUKeD@C+Dr;_Sfejlz-T1u!@I9F`8@CkLcjVl??r-qnnC}Q!>*kaceMg@_7r?pa8O=I6tkVJh3R1A)}&2&rB)F04ce=MiG>@B$1T(X6B}rR2HN% zfL*0uke6=1Da;Se9N!S2Dh5L{6H60AV+%uzeO?kLflBz1%n8n{N@Xx`a+{j|ig%;fyMVtquA>swkFrkSUhq@`IJCYqZhnNS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVYP7-hXC4kjGx) z>Fdh=jD>?sPUQc`O(_fvj5eMwjv*e$lYjUtB}iO#*wd!J`q`Oy2IkLc`Tsw^e=(=B zpz&w1__Ic&d|K_jhjA;v-zb53lm>XO*jntURY{htF&Yr5S`0~`;l3z@!nXIm)4<0rF8)r;BKoS$cdz|zL!7g)G@SUN5x z{Q7V=+Mwe5oo2Inay^3PdrW>jy1t=TRww@tpW26`jFWaOOSt}FGglB-r))##oXM>n zEOke&eE9upTTWhwN%O51=I{Uh)>ox06AWpv&3U^sKSL_+rKA5r_LoXC=Gp%I{$I80z})u{Hoh_vR}EZD85kmGiY$+h-O>RJTGbNQ zh?11Vl2ohYqEsNoU}Ruqq-$WJYhV##XkcY*U}b2bZD3$!VBjqOB@jhJZhlH;S|x4` zMovC&ff^J*HWcTlm6RtIr7~ocloS+O>Fa0aCZ?wXab|M1UVc&fp7XMEfodf{YC|$g zbCayBT=J7kb5rw5tgHfnN{bl`m;c|bkEX^GWQvuQM`~tzMhSzVrIAByVJJ|IIFdO~ zHQ|{lB^e+km)9tQQmG`865q_+)RM}AR0goC^b7LR?Kg$_p_$_w0#wCdXl7z*VrXn( zXtB>r;v`TBKax4YnN_I_22M^>7TLW4N`)awg$8*tq-Ex$0==%En^%&PpRS*lSeBWb zpI5Ap2y%T(3&S+?6qB?xOT$ESlVtNGa}xujBomY5BqI}(G!qLwpbkBt`zl`F`wg^# N!PC{xWt~$(695CQNj(4n literal 0 HcmV?d00001 diff --git a/static/android-icon-72x72.png b/static/android-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..52698339d592f048d6151334095c401cd788c712 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^9w5vCBp3?X-pmG4Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4D|kDF2$7#OE}x;TbJ98Uh>uX?~B>%t1h<|_;8>o+v+uSne>wMExT zO-)Sn$PpJkwo^IBv@U-YZg(s`azpY0gK~R;a6sBJ3w7mPBC8$#l*_Qy?%1;RqCg~b zx9{;j@B9X%_v_!xd~m2Orzh*?uj2Fn9&*0feb3{ZXI-Pp=XE`-im64 zJ3eiQUlGL0(fqDQ$^_)-E5;fx4qw;zco1#2ldaR*QkhxYvWWK(uZKy;OkvRt6S60~ z{pG81p#M$8?_RA?iw76&LAn;RUA(YhI$Och7jGBK?C4Pve7pGfs)DC_8M@m%cJLVL zZd<#j;AxR~;Mxm~r#GBYOSv%r@-`k0fg0h9JN|z+XysH~y!SV|TyxyJnG;poQ}~!C zR~>tEx4+Ry|C{cK>#1(jgt%Yctq~5lu9gya`#i64;$A5YD^^+$C&w%mHpjzS@QIe8al4_M)lnSI6j0}v7 zbPY^&4J<+o4Xlg}tPCx*4GgRd44mb^1fpoj%}>cptHiCr$jRp|P=f-kM%P&gbb6$2XP^|<=ZAeCGZjzOiOMY@`ZfahMl~n*x zX)%N0^8dT_(bRZ?OtG@^NX<;oC}A+PG;)Y73-eE%tdyoCGT2M=~ckvnrLr zz{zRKBD*(0sW2p|&>&BSw9K4Tpx5WMpEJW@4cS)S(A-U&ZTtzkxO|c)I$ztaD0e0sz_NaFqZ6 literal 0 HcmV?d00001 diff --git a/static/android-icon-96x96.png b/static/android-icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..1e715bf1613323bf97503fab5fb87e1d32c0c8f2 GIT binary patch literal 1155 zcmeAS@N?(olHy`uVBq!ia0vp^2_Vb?Bp8l=)_4M>SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`!f~}E;*6^A2+1{<@G&X978hhCI9eGK46e_a0TmPv7RV{PdYz-e|xHZ=Yh1x z$^P&k2g;em_H-JV9pvGr{ z>FrLVq>Pj&=Dq9ZSIRDVa&gZy5otjmRh~a;A9**w7wUTwpU-!!c;W85^{+q6pYZy2 ze35oy+3k)sEcIHyLQeF&`nO`bgqK%jfbNHSmk_O{rrEDFW~KTiY3*FzzR0EGetnS6 z52?OIxBoIPn>623!%HWAa>~K^Od@wV?KiH-bO;ps)T+Y$FLd#XbHAEhefhndy8il2 zV*Q^TsB_|Anxnn&rb!mBqA!@k{hD=9VY9+_c`;St6&a0(x4e`{NaIlcs*{j(kSV~% zVIiwagJWK!8;@Ft>B1zLl-j@l{z^;zxN17(6D+VGCS5quB&DRYV9E0T+gXk_O^J`V zvSpD*=MS$*toA~ICG0iF9<{}YsOrgkY}co8NvOpc6XfWnFg+kP3LQVbuW4H`l^(miE51Jal1c?IS1cwJ{^5% z%7wPa4t!HSt(>*}HLJ(T-OSxmO`?WV4Z3zuKYR1LKML^v_5KHxK9(%PV$ z9U%rAI@TzpG;UsD;iq88y(DG!B8fazBW+IBi)+0r7;gNRU;iMm@TY9x%8peDSDFI3 z-E<|k!Wc4Q3=A#Ly$^ot6Z#HJO{yiX5hW>!C8<`)MX5lF!N|bKNY}tb*T5pg(7?*r zz{=1<+rYrez`$AlOCXAd-29Zxv`X9>jGTPl0yQXrY$(o8D=AMbN@d6>DJdwn($~+- zO-xS(;>_f1z5Jr|J?CZT0@X@@)P`h~<|bKLx#TC8=BDPASXl)Cl@>D?F8{w%W1gMI^(9Fcr#L(En&|;sL#7UqMek5~(GpkY=44j;%EV6q8lnO(V z3JvmPNXyJg1$tdSH?JfoKV3g9u`Dw=Kd)FH5#;)o7KUl&DJE%YmWGMuCduYW<|YP4 lNhT)ANk%3nX(kqWKplEO_f@>U_Zw&fgQu&X%Q~loCICR=xikO( literal 0 HcmV?d00001 diff --git a/static/apple-icon-114x114.png b/static/apple-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..37b04e27a54a209629031a85fb319dd9cf712467 GIT binary patch literal 1258 zcmeAS@N?(olHy`uVBq!ia0vp^MIg)pBp6n0yR{HVv7|ftIx;Y9?C1WI$O_~uBzpw; zGB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHrx4R3&|Mvbf`++?6 z5>H=O_Gc^{Tyi4+KW<6^%1`rjaSX}0_x7f*he)CX`-k%VTTEg(7oUkak)VE5BbrH7 zSHoFDbA^I_tW`-Q6R#kTNz03X4bu<2m@u7BaANK&MGk(}HkUPl!8@L@=WaU|^h~ek z#g%hx@2fh#C*Ln`JGNrp|4jb+dH467IkRau|EV>V0uvmVI8}f|<~*NO`7Se$yS|;f z!D6G1t6f-4Q^=P`k4`si*ij$URkMS!^HN*)`O~dOW%HMwxPEZj-luZ+Cj9AgIK7iG zX3kri%PT5m=PWwBS|;P|Kb`X5OSb-qxF7f|(%bKDo#Fbw24UUW+!q)6?VrpVR>tGH zf2~B(cK*JPsv%zdx9Ze?z83fs)jwx}Z~EsMd5`*Hd+)tgV;B8yeE(~Rvg@@~Gi4sy zO`jb4WWlrbZ=S9F`b2TPG*D>L%CMpU{`7zp>5F&1=uAJM{g^{l7GL zS6?iLQE}bs*d;X$ChlS)n}eTh>i$x~&u>(`{+OOo{e;U~zAjEUd-DHdV=<`aMiwLQ zTmMR5^Z&WHHeQ8o=g#`)@0Dg<4a`>AyJg3j$f%yl-rZ*xUpt|(b(ZC!$g^JpSI^9z z7G@kJzO_MX*U!0EL%vUR-ST^C<)s-fKLs@hL}v6={l4WP{CDw%iw1Ly9G3+besy$T zD{Z)G-MgTOUi~!w?2OKt%gz1r6Ga1Ge!OrZBzm0Xkxq!^40 zjEr;*Omqz_LJSS8j18;|Ewl{`tPBjC<-Y`?Xvob^$xN%nt-;92=Pgi!0?3Bq{Irtt z#G+J&jFOUqVk>?9%-qEER3Oew&eqE>O5bx{b}mq@1W0X2Mrm%6m6c0=a%paAUWt`e z08nW$gW>Z3yYU0q~!7%MNs~i zL{j3LnVVWtS&+&Ac9niXUb_9JFh4YNd_#b$7!1u!EKLlJEetL8c}biED&a>mCpfbz zmBGNtY04tIH$bT{B&pCKPlmM2oK&FK^>gz|a`Myl(-O-vlk@Y6^$|g?Z)steW}ae_ zmS$;~Xl{~ho@8!fV3cHHlAL5@Vv=TJp$F8V2XtS>>wCX}HZXX)`njxgN@xNA(bM@R literal 0 HcmV?d00001 diff --git a/static/apple-icon-120x120.png b/static/apple-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..772a64034bea483e6e96b5c65fddd4292b8b1213 GIT binary patch literal 1328 zcmeAS@N?(olHy`uVBq!ia0vp^6(Gz3Bp77)Gx>lNOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>MBZ*S#$2q((0f7qS-Hs2y+`j$jXWi27ogZDxL z0uFYx+!K`$3>3@>$YSM8JfiZl)ip(AiU}{%>@P|y9e9PRCr0NadR|a+?-iOewnhnsLngS?Rnyn{UU4$4UB9OAmT^*vG%LN^QNp?*-`cN zrbnC5zO9FzhMYbXw^C|tV6N5l-2V=o@ur5WHnJ|wTH&+zRLF77hmE$g!wT6R$y^Hy z+L&A)v1;Gvw`=rtlR9JP-i_V7TGNyB^UEi*+jXPQR$Qx95%BU!uUM&-5;Q-q#C+Q8 zk2yzAJ~;hx<{Af1?~|&xVrE2ke``yxTkC0Tyx2}U&vMV=n|tQHk{7RA>tUBu&UAb3 zy6O78_kKr)aQ!Tv^W{XF=y$#v{OmF+GPyHxxHEAy`#IkOc)_RCB=`1_g3VOz11 z8y6#kzAOC_kUFQm+pA!I&P0FV^-2voM%jDT$;uTi_+UBj%3HU0eA!$X?emK?-iUkL z-5n@e1Cz@KC0)CddKWm^Ae7n z9C4SU8VBaOl`LPY=epuk`b4$W*_UdL)+l!$3N3UhUnREJvM1e3TBqY;(M^NTOJ&}% zaUHV#sUNk@UBu+z`Yc21hpO8z&&bPL;1!pu^?P&W;hmisx2t5+B!X*R9K4YqeLczQ z;}el@D;T10efaS=NAAP%d#8`vrvAA5J%3~VitK$i&G)~bFZC+Raz~}+%2QTmav#ch zFUuW&@xbTFW453#V%KX|O0C=?HDz_r!CkH2EZlZa4D9{-yO3vl)zp6$#~v8Y&w8aC zWLkG@b=22wenE%+$hbbU*JScFoqjy{uR4>#0S0Cs81et`hw$SyW-8{HZI6ISU$w+F zq9i4;B-JXpC>2OC7#SED=^B{m8d!uF8dw<{SQ%Pq8yHv_7&yy+2}IG5o1c=IR*74K zk(19`pauny4aNCsCFO}lsSFtWfnL|o%`3^tPuEXNEXz#J z&nwnP1i8MYg<+a`ib-0UrD3AENwRs8xru>Ml8H%jl97o?nu&!TP=_ASeHE|o{RY~= N;OXk;vd$@?2>?~~4eS5_ literal 0 HcmV?d00001 diff --git a/static/apple-icon-144x144.png b/static/apple-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6c54173af9ef82e341ce50b0985122e80c881d GIT binary patch literal 1578 zcmZ{kdpOit7{`xGE|u_5Bs48H*_avqHZwmmGcFl18h2V^jJeU6!H7tsp~PyDR8L7m zgjPh#%4Igx(4sa{Q3`Etjmx9mBCR_m<> z0H`^W9Xt@5wLDai4`?=T3`LA0i$oy-P?fo6fwl_qQFO8g1%UW(0Z2*#U>=!D8U-K* z1HgDN0Pr~gbohC<-EEM7e29ya16WGU?2sUyvcQ?*sQgAzWwoL9(o8iXuF&i3K=O*~ zll29WJ>B({rxVU}zv&R-uO0UDX{N@HsTVBX33IQBH!UQjP*MIxx*x*Agr&-9&8e6& zbJMZAYqy(~mUdXWoGr`N_%tD$<(o*!;S ztVw-S{53QD zsas=icMO(a^v{+mk~G`0ugoa6Glovp?JahbhIM^3pF1_;@`G5TM5rzERmg%XnFQ>{WA+ff6x1q7mgFB5rK8eNLx8x1YNzhh5n`-eHFMZR5lRG|wXHgOlpG$Y!di;lfs@ za@C61aq&m~s;_Dw2Ti6tWa^h@thgcg?TGl)LI+pNc-TU`;(epl~ z69WP@#;1*HI8(YxyBI`^aGMRS=9NZg;aVE6rSQ5@vh7qBWcQndkkh7FJ+%Af>tmkQ zLz(AgMP(z?_9qFBbu$6qwEa04*&c7uo}5MVeKuP;>`9tzx{|Ko+`36-YW#g=bxfA; zIz3@z9cIT1-FxmL++txyqT{Vpdk^Vc^-#|p$~NqYK2qe5=6Kdsc)cjTbDnxdXo}*- zMK$(}^%bdiUl-s`TFe(UYktTVOl>D5OQWAPusllWYSO19J(>G4@xaNd@-!@ElKTFQ zZg1DyxMFK)pqI^ZrO&FD4TpsX%bvILmdCy{FHzntGI)qn02{MpwY z1*4Y~7UkiJvh~3s1Et8NHxW4c2|{TC2277)AO=`sEG^A3kU0kDg~h--FfbPP9R>qq zF!r0@x&J4D%M0Z&5B-0FrJbt`NkA=Eh~_Z`v9u@#U<(BNXc&#=aA_76VCt`JG;|`wr`P;&x(+@hcjSu4lt0dqqz}+13VU*Nju1)^CF_r z|F#^B$6=XPp%9aa$I`4Ix>bl3gs}{PAbN-;1Ti6;1(IQbtS@e2;3HB2I6JyIRM-WJ F{sxYYf29Bb literal 0 HcmV?d00001 diff --git a/static/apple-icon-152x152.png b/static/apple-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..9849237a9025d0c934b0800bf36bb62793dc00c6 GIT binary patch literal 1673 zcmZ{kc|6o<9LFDplxf?jOj<{yCgqsZH9L`MY?MKcB*)ItT&|hnhmbHtC|X;s6gKTT zHcHariZzbp80Ad_w#*z&-eL02@ZA#)~{1v z2LM=aV@-90ZJKN-!4I%EKXMT^@?1-rB>=Zmls_;O;JG%-+K~o87#e`6SODhXPf;%c z2*Ls|N(X=h3#bXNmK`R;j#bP<2dH22AI0@HdLD%>vz~9P24+-Uf$G>#i-^uIs6kSaT6&?TjFz^7AxTEsmE0KxsLSAcU$A;?xE2%R?Bp4 z%_F6(sa#v`Et+SqH?k{BqI`y>JorPoiO1N{Yo{b$SLSL>_5a!)_jvwrii*Y!R8fkX z3X3-J=Be-VB6@%8Ow)*MYKP^^+`Xio5uG`y%F)8Y7k#a$kYkSel{rhzxX{VB;z8B# z5t5F7UXA&dmst=r`5U6&U$%0Yc~!nB3189@2wV&7vn#HjNs^L3}&nV3$z0NYyan&a$XOlhhjB2`L_8z-spqEk3Y~;o| zggHgoF{4h$J-}ZkM-^RjUzlMJ`()OW1N*BH`f=Yzh8T;$koV6S_roZvk5qkGYCj%Q zLpL?BLZ8~Y&1IPHTVM_6;GNb;!VmIjA^CTs|Zh(T)pS$UXE$y*7X`d_)4Wu$r zz5`C}bWEysd)h6f(dx%1RP_6O)C(dM*P@-9Ct2#_Mr-3@3B`tIr$t`! zAB(c0K45iPA)^!7RB}}D#*^^opjs7V!%qX(U;Mr$;m)dhGgXg{9kn_>bR9(X_?qVm z8QMwoWMqbQSM__^U9OL=S-7EVi9EXNnRd<&UQfm{Q6ui+{@D*ZZ&oiGemVf3=lWGT zcR-OKs_SpsG&ps8Pi4@(g)`Cyyw_z#pUVf;fkvl$ryJ!r5g%h4V{}%hv`tehLc^D? zyzx>mPrV=*AsQC?Z&*x>2vB7_AGHncm7QL~uooG6`8vHS=oPgky<~p=ewFukbmW>UazV3w+WQCM8QKAc)qcEs4Kl#yt9!7&2|e1YkMYJhF`d&LXx9LdSk5gxaZU$ zZ;!r`>5Becua=02sm=B024`lMs3>Yf;kogl`4V*Sg=$BqlzquB=M3r@r4^5+^tWYw zEmhXlTQznxT7LCiH+zI+eriYjBXyhR`N}$dr}N!D@U|gO4V8{FTG-M>`h%`Ngb9@+ zZ~8{@h;5?o;I^XJ04>7#$b!XqJ&u>GHa!Ni(u{ABb!o7&tY6C&;Lc6!XS#P|{B$Ot zW~1A=@SU;~vN{SKXFzNcD}W6ffXCwT23Vp2*3=n?B@wVBoT(lbOTuFJYfT^iEWl52 zoX-jU{{TG2b^;F2mSqSOaG(%I02}ZiNEk@MVEBFvE*l-@cTSPE-<6ELgy3X%0CYA zWJr6#cG>m3bp=A>`>~-=Asc*L6-MaKwJ1Jf_k|A48KwZvm}o}C5lnHW4-X<6VPwM! z9VdPm8(=Av3)$x5uaDRl9_cmutm literal 0 HcmV?d00001 diff --git a/static/apple-icon-180x180.png b/static/apple-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..48e34d735b16785812786555279f7004b4807fe9 GIT binary patch literal 2066 zcmZ{lcT`i!7snq$2;c%sFH#hA6%|r=N(hKlL!?L*6%j~CTX+P?1H=f2=28S%*X%}+ zj#6X+5rn0P4OgrLl%iCPN~od)5K!31p5Hk?-97uq%zZQWbMM@l^F8;ay1A0%<+SAh z0FWm;+It|jZf(dQ6QEggcp5QM3>z040I11a|2YtatT$2}JzN0bf>Ba#6f6;{FQRjJClNO_LHSs56XAaBCMUa@1w|CW;z! zo*h}(@=LB)(#baMvK4joykJZ=-AOJpMnoLvpJj=VZqJ! z{#TcChG!c)Vh9WAoIG@=mL@m|SofR9NrMH@_tuiyg55F&67tLqQi3??I{9_X4Fzg1 zyi&T?rEP)xyi_YtLC=`B50*DLUz)5D;y%ux@2O2>=-q5>35sfnuJag+AiE}>%OO|) zDM++9D!VT;is*NCxqoLth4SX)vV9{?m&!$|jNZ&*-Ox_!cqU3#<7i!6l`AYOLrM^< zK*_mPykJowgC5-`+M$E0s#h79MmuNLWm9*lMQ5!abxbMsOxHiJ@(0DzTWPB zMZKzVGpE&OB(MTHYINq>M>DHM*L)Os+3@zPzkXlKDUulkgJnb91a_9{jvbpL-z0cQXa5Wz5}H zUtC2!P6yqKw~bG(&}t7no7}!=<=kB&mo*^lUYB%ik>Kl;ahwuinsp^1bxbMaVd&tS zJKBC$1D7J(r=4RmPQC4Qqei*7sZDr(>fC-YPh88j*YbCB;GRm+iS2!4zn-v=BZ1$V zEpRiQWy_xF=avmI_VcQ|6K-7@ImK;D$(r4sDKKm(EGNkoM<+)-;XS;IG1p?IcV(yl z9Nj4giA_6K*kvmOqgOvk^-Nly=D$vCy{cXFF3868zN1PPudQt3>xakAdj1p$7W$ob z7H99)1NYnnY6TIJOZ;NGV9&kB)vqJ?e+Z_=(&ZFd7~8BwD<1K?O3kDi1@V_3pNoB) z|EU1|aA$Gt%=1!3r71MHrjj+itSRT4PtgY1K^Mb@RoK=7I&Jd))s@cc&#jnAX|4@9 z-5vR*_(Q8+`3kTHy+`>=(BNCT&R%0?MV31F?o^m`zw91E(#d^AHSHP~^bU589kBHF zthlI~S-NpUZmAPS45R0|bVH6%@-h6H^*=c5t-HI=Ur5z(Ug~v|=H2wui)H8{xcns)!qCNN(R2-;$p!UwQl8!1`AMiN7m&&t1ufeVQMA zOhr9jex5MH+}rq+yQyq$X`F5tdGuF_?ZNWD8k{#>ob=mz6}yn3F{7$gavQ zcihoB1&xo{YFDP&$WIt%-E`M zNbKXF1r1H`>+;o=LX8$TYfhb&tZEc?i`qxt=ifNtpC-wQO0BstS^arNJbbsXQ+75f ziDb7b?W+6o!t}G4J17fJPTs1xcj%m3U)OFwhSkevBlhuYq>;XU5+rnOnj0eJ#nx_$ zTr&8mPa3aCo6dTF{!=7cS@{=shw<>@G2zw2VB!8Loy^S?n>XC=wspCM{h|C$Hzmf+ zu4A#~7rR?Ux4eOJ`5KYqIzNcZYjh>j&NHAMMGi>6S~XN+{9;GCe*TS+VEzm9%93i+ z0L$F?!ajz>646;z29BIKRyxG&Hww3O*)?Z)u($Ho6MWaa{5KuYTJoi|1fp>$5kS;l zZv!B@@89@$!~9t*bwv@?!p$vJh;Bxj`xe;Y5F8W;(}>h?8e#xE7LPZ^g2q^a7Y<7_ z#S(FZ9at<8i?!1iyMGe^v4dFj=>HDD+d5An0UOs&;IQd%RA4v_V8U=1hls(jpg;x< z87ykB2|Jw8(xID+u$pVE7c&B)5Q+9|Y6L_Jg^5Hr1mys@($!|nKN#{_79!D+#$qsG z0B4T3_B-y4FdARw`5)uM3WAwy$g|%!t^FspzCv7B5DktFqXB*06`SL%Hzp8NdvI9w!9*%NyK&VE0?zi8KAR5XvozuP$(S2 zW?<-nkt`}Zl!N*IlVi*YIJ#L7NT-|Q0?k0G8O035;wd0VrQku34iZd|2ot2f6B9$r P$O!=1!PUOXHXz|I*v^Yl literal 0 HcmV?d00001 diff --git a/static/apple-icon-57x57.png b/static/apple-icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..c8fb43b37b3d0855077d88568ea0c73743047d88 GIT binary patch literal 941 zcmeAS@N?(olHy`uVBq!ia0vp^mLSXlBp6l}--!fLEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4D|kDF2$7#JfxT^vI^jwk={*GrJNYB{5{uA+yxCKho?u|^ne|in`~ScH>q66eIASK; z+>&%mb~i2`&%*WHjkPOi&3|$=Vo3=GB)xE}lGb zs*T~yk{2mLB907lKpB0jIuSO%kO?AA9+Ch5&p9YJf3a12yI+N5y^v=Cmtks+wX%!g zZ>N?U??WQ?7BMV8H@|x8!Y+w5{{Nb|>LQi+gn4%TV_$u4^45O^raU}G2e01#|F7QM z{C+FH-mw)@H%r*M@1YGztY5E1YH`SJg%eJw1T7PO?Oi_Kl1f7gw1`#fN1J${#K za?squsYAtJRdLAk120(^RKETG{36523K;IHC9V-ADTyViR>?)FK#IZ0z{p6~z(m); zBE-*iRLEB r=1Jxz21ZFHCdo-gCMIbn7J5J(dO-J8yuSAvXaj?%tDnm{r-UW|Xwg=F literal 0 HcmV?d00001 diff --git a/static/apple-icon-60x60.png b/static/apple-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e965e6d4a15b901791989a07e6614a0b46c9c1 GIT binary patch literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^HXzIaBpBqUx2*$GEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvnvo}5L1%3y9>kr_Wm>bfjssS zPhVH|XDl3Caw7jfZc1TbV9fP&aSZV|p8Ug~F+t+0%_fukt97*W9GQ-~n)3hqe?P84 zDIzH5#z)TXXWYk>*6?^V1mF2~>i_@CQ(Gb?xb9T>dq3ggpVv39x|$WZ<~+2{+xO@1 z|Nqn7r>A8cbloZZ?Oxqq@%H)pD-TWCxzDX5PrSKPt?r<3LcP+0RWp7~aM{m(xMq`7 zen$GCn7v$)ChS^TMJ(%|#jG&;_VvV~p8>tr7vBf}OjvYp`~Sr2 ze=5IUaVc~;c3op;@r&30|M#1JbN_Idb!N%wXLJAbx_-`ds1=d-)ig3x}SHmgUc+Z`uqR?U%$RsR9*joD_7{?if4gm4~H5vq$~5E%R77u6y2&N zt`Q|Ei6yC4$wjF^iowXh$Vk_~MAyI~#L&RX*ucurLfgQ=%D})`{!1W=hTQy=%(P0} z8jPHL-U2l!fNUtvPb(=;EJ|g_C@Co@w$j(n%uP&B1>(%)Y`y%V^gZWg=K|GAfYgR$ zl;$Q`S-IpVm*%GCl~`E?0F@Rq7%u<6TOUo0C&&~lE05I7^o$Y)LrWuv*uqet8gV3Z zplZT1Q%W*GN-nQa1SM-pBqhF?xv3?U1*r^RSLqkzrQ2@`^FuSoHw37P!O+aa(!|i% z!q8%$m&8e+5`H9ef-|d984R49rYy311C$Cwk_rv-WJt@*Nd!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4D|kDF2$7#OE}x;TbJ98Uh>uX?~B>%t1h<|_;8>o+v+uSne>wMExT zO-)Sn$PpJkwo^IBv@U-YZg(s`azpY0gK~R;a6sBJ3w7mPBC8$#l*_Qy?%1;RqCg~b zx9{;j@B9X%_v_!xd~m2Orzh*?uj2Fn9&*0feb3{ZXI-Pp=XE`-im64 zJ3eiQUlGL0(fqDQ$^_)-E5;fx4qw;zco1#2ldaR*QkhxYvWWK(uZKy;OkvRt6S60~ z{pG81p#M$8?_RA?iw76&LAn;RUA(YhI$Och7jGBK?C4Pve7pGfs)DC_8M@m%cJLVL zZd<#j;AxR~;Mxm~r#GBYOSv%r@-`k0fg0h9JN|z+XysH~y!SV|TyxyJnG;poQ}~!C zR~>tEx4+Ry|C{cK>#1(jgt%Yctq~5lu9gya`#i64;$A5YD^^+$C&w%mHpjzS@QIe8al4_M)lnSI6j0}v7 zbPY^&4J<+o4Xlg}tPCx*4GgRd44mb^1fpoj%}>cptHiCr$jRp|P=f-kM%P&gbb6$2XP^|<=ZAeCGZjzOiOMY@`ZfahMl~n*x zX)%N0^8dT_(bRZ?OtG@^NX<;oC}A+PG;)Y73-eE%tdyoCGT2M=~ckvnrLr zz{zRKBD*(0sW2p|&>&BSw9K4Tpx5WMpEJW@4cS)S(A-U&ZTtzkxO|c)I$ztaD0e0sz_NaFqZ6 literal 0 HcmV?d00001 diff --git a/static/apple-icon-76x76.png b/static/apple-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa1b7868930f98af2c513c438d55e308b8ec27 GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^J|N5iBp4q3;rkAxSkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`!f~}E;*6^A2+2iFfd;9ba4!cIGp^$-}Qh&){Pa3i`yIz+;2C}OJbI9D0;ua z>+X)<+|v`~|Ei`wxzM;~%bTDDcVr|pBY7+(H9uGH;Q1Ytq;&XH1J?|fuXoBBpPKD{ z)nTykh@wv1^h4uP@je@>;qTDfl57i9Y z?glnxKe*Yiwq5vP)>`)?5@q~?27B5sJo#2|_~{n;;H(?(0uQ_KN}Kk?9OhemGH{al zPVxIY+IaHLJyyAI;1-w}qHxG#U*ZpjmwJyyomlsX?C8mUb@A|t2O0Lq6*|v4&dG2G zYRGk~+wfX&<;` z-%*7n5z7S4-n^D_`8}htasPAEMb|&PPu13+H0RW<^FMfg7gy%4p3cB*^k9QdbjbtW zfOk*#wH{4-qfzwdUGHkY{|8cUxQBnaC&*#&QIF}=*(V3JmKTdpPmG`aSjfP!<`Cn8 zJL_0-6xRJuvitLG_$R)Kn9$Y=C$;hk=)w!K`F=`|O!n8-VexTH+c} zl9E`GYL#4+3Zxi}42+C)4NP%Llg96Bg;{3Fd^2DN4hK!Puf?_Lu{mk6N^i&|uOwQKJFG}BYUUn`}tprGINJeRH zl9iQ9esXDUYF>$zRRBPq1*#E8G6$+A zJTs*v1El2g8bwgnkwjABo0*$hQdyA70CtsrL0-E3rZ7J=b9_U9su&E-Oe{?djV%l< z_IXL11S;W2GAB5*DwV;&$!W?WyEj0oFeItaAWw$0%$!u9*Y$JrN^WMYzLVxb4rp$Bwd#p`>&fi^IB My85}Sb4q9e0JeIP?EnA( literal 0 HcmV?d00001 diff --git a/static/apple-icon-precomposed.png b/static/apple-icon-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..7d884ca93df209a35d0530bb7b7a25d66bb29f0d GIT binary patch literal 1909 zcma))3ozUH7RP@Qn$YU*QqQjCR;dl*?@=n!^(eREQE&PXNf2a91W|2Kp;Zknz1FL} ztjAJPx7>|x5lVK&E2v_s8d7S#woAohk!9I`cjnIY&YipW{$|ea%sJoBIluFpIc(1} zrxg`66#xK=1ZPKY*z?~T8ooe6qxm@OWW(*jnV7 z!YS4Q0Pzq2Z^;1QiU3e!6!X0Buz(15J?#kgGIILc;RwYfxI3ZdWYG$rsodH~TLnPw zHo?)}_p)fII61!GTJhrD>4~%nRrOEKUvSe-te{=yzm34={U2dj4KPv*i0l`zqjKYN5pF0s zWD~yS!7jJp#FtU6Hip-h*(>hxh23T}8gZzzBT)zGY<1TuCUkgp-N5eHt8d)|BCFT} zGg-FEU;K8tPejwwzBykjQp3B+e681UzxW+r+u_^db0OyB z8a6@9)^E$&>YJqNnfK4`Y<8OH$FQv((lyA~6vwtFgn<<4%UmP(w&7(?^jdVw5Cxd4=vdMAO@FQ{F+di2=b++%ki~o zL5azI&AEe7>m>q?{cHeRq=aX8)(Q&o->i}}xzBpNlk$t?>qq`%jDJaXLts5wvVJjN zmRyM8_jt?mH!2W2P=HdOP<@7FT$ls)u1C~Fets0$g zeIwcWPC0?Kl+xJHh0a-6Lr2(m&k?)z;|M96qo-V*zfU*1ju{VH)ViO0aPc*FG+dG=AN{?k<^s%V%R*7=r-6HH1>RVaYI|>NMmIx=gzKf$K!lk ze+#3%8i+%mX;0-81dq-ZWjR?LQ*)FeSHmuZk9IY;N59S01%Ll5WKoQT z4B2=flNzj#GPv!@yyv^!{z)b_i|!(;^YOt0i&@pFrQ)F|b&>K&=p=u+e0FeQg7z+* z*)>|kK0F!fa**q-2AKN+PY#F?EV_(cBPhE7o*RP&)&HIT4SDh>?8xB9e{F)-Mvv)q zmKjQ6QgI=%RM-JC$jrcFlGWJmI@-6Ohz2e#Do?_38%tF3%Q7mjty@e)GC2l_4llAM0`{*4(Avh z5+6mSGjTXi7>xs_)q5=_Fr)ebLwMf>hjXUV!XuafBI~*qz=Xpu2&;hLbjGpHft>a`%%?0b literal 0 HcmV?d00001 diff --git a/static/apple-icon.png b/static/apple-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d884ca93df209a35d0530bb7b7a25d66bb29f0d GIT binary patch literal 1909 zcma))3ozUH7RP@Qn$YU*QqQjCR;dl*?@=n!^(eREQE&PXNf2a91W|2Kp;Zknz1FL} ztjAJPx7>|x5lVK&E2v_s8d7S#woAohk!9I`cjnIY&YipW{$|ea%sJoBIluFpIc(1} zrxg`66#xK=1ZPKY*z?~T8ooe6qxm@OWW(*jnV7 z!YS4Q0Pzq2Z^;1QiU3e!6!X0Buz(15J?#kgGIILc;RwYfxI3ZdWYG$rsodH~TLnPw zHo?)}_p)fII61!GTJhrD>4~%nRrOEKUvSe-te{=yzm34={U2dj4KPv*i0l`zqjKYN5pF0s zWD~yS!7jJp#FtU6Hip-h*(>hxh23T}8gZzzBT)zGY<1TuCUkgp-N5eHt8d)|BCFT} zGg-FEU;K8tPejwwzBykjQp3B+e681UzxW+r+u_^db0OyB z8a6@9)^E$&>YJqNnfK4`Y<8OH$FQv((lyA~6vwtFgn<<4%UmP(w&7(?^jdVw5Cxd4=vdMAO@FQ{F+di2=b++%ki~o zL5azI&AEe7>m>q?{cHeRq=aX8)(Q&o->i}}xzBpNlk$t?>qq`%jDJaXLts5wvVJjN zmRyM8_jt?mH!2W2P=HdOP<@7FT$ls)u1C~Fets0$g zeIwcWPC0?Kl+xJHh0a-6Lr2(m&k?)z;|M96qo-V*zfU*1ju{VH)ViO0aPc*FG+dG=AN{?k<^s%V%R*7=r-6HH1>RVaYI|>NMmIx=gzKf$K!lk ze+#3%8i+%mX;0-81dq-ZWjR?LQ*)FeSHmuZk9IY;N59S01%Ll5WKoQT z4B2=flNzj#GPv!@yyv^!{z)b_i|!(;^YOt0i&@pFrQ)F|b&>K&=p=u+e0FeQg7z+* z*)>|kK0F!fa**q-2AKN+PY#F?EV_(cBPhE7o*RP&)&HIT4SDh>?8xB9e{F)-Mvv)q zmKjQ6QgI=%RM-JC$jrcFlGWJmI@-6Ohz2e#Do?_38%tF3%Q7mjty@e)GC2l_4llAM0`{*4(Avh z5+6mSGjTXi7>xs_)q5=_Fr)ebLwMf>hjXUV!XuafBI~*qz=Xpu2&;hLbjGpHft>a`%%?0b literal 0 HcmV?d00001 diff --git a/static/browserconfig.xml b/static/browserconfig.xml new file mode 100644 index 0000000..c554148 --- /dev/null +++ b/static/browserconfig.xml @@ -0,0 +1,2 @@ + +#ffffff \ No newline at end of file diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0ee949c65125d5a94b875043cad25ef744e07a GIT binary patch literal 711 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UASkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY0t>0)3IFPO6{&;}^Ml;rL1!tlSn|IB_MkG;gx z*OmPl3kR2+XvepvPe7q!PZ!4!iOb19`q?BlaLjp?n-}?`Bs{(N_AC8_M*f{Vli2HR zKc`>V`%8RLs!;Q@)Bpc-OT_H^e_V4x$%9iPETXIb@BjJZ*==lHUCTRp zlBD*T<|aNyEO?&ynEKY-S&mbgZgq$HN4 zS|t~y0x1R~10y3{0~1{Xix5KtD`NvILkn#K11kdqXZbIIC>nC}Q!>*kaceMg@_7r? zpa8O=I6tkVJh3R1A)}&2&rB)F z04ce=MiCUbl1NH?Gjmf*DhpB>z^>9S$V<216y}F!j&BH16@#IfiKU65v4x?eIZat)_Xa2xh9nglDEcAdn^nmWGczy3T&;|xiS3j3^ HP6Fdh=jD>?sPPF4&(EPn;|KshO4CdSX>sA>>GzNp{}O#>Q4?$YgXQ# z_iz8^Q`}P$QmXpvoHZWdOTMzaTH&ep8qq znmN89KvfKeW+s*H2AjWtqwOdBysOAlJ9FFibN~F-c3aG)y!%Nj6V1H!(0uGBHU`GBPnq dGqKPE>d*tauj2K+-#{A}JYD@<);T3K0RUa59TETl literal 0 HcmV?d00001 diff --git a/static/favicon-96x96.png b/static/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2f908847dbf366783d2520deae688197cdc8b5 GIT binary patch literal 1155 zcmeAS@N?(olHy`uVBq!ia0vp^2_Vb?Bp8l=)_4M>SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`!f~}E;-STZ%vvauc)+%1vV)h|hsS}3wsthI-Z$T} z^meCFQbx)X^WOFID`l5Fxwz+~_Z*mU^vUAt!oX{aZ0z!pkc%K=(tvONdre)9hCovr_$%w016UU*uA8zdlIk zhg9F9+kcstO`7ki;iVHlIpyGdCXu_G_8V7ZIs^)RYE|L>7rOYxxnIq$zWiQJU4Q*1 zvHs5v)H!i5&Cywwx|ck8eN{@(L^a0qxZNMcoP+N-pN>8> zCx> zju3+l9cvU)8aJ=7@KZ44UXn6Fa0a zCZ?wXab|M1UVc&fp7XMEfodf{YC|$gbCayBT=J7kb5rw5tgHfnN{bl`m;c|bkEX^G zWQvuQM`~tzMhSzVrIAByVJJ|IIFdO~HQ|{lB^e+km)9tQGNvSw65q_+)RM}AR0goC z^b7LR?Kg$_p_$_w0#wCdXl7z*VrXn(XtB>r;v`TBKax4YnN_I_22M^>7TLW4N`)aw zg$8*tq-Ex$0==%En^%&PpRS*lSeBWbpI5Ap2y%T(3&S+?6qB?xOT$ESlVtNGa}xuj lBomY5BqI}(G!qLwpbkBt`zl`F`wg^#!PC{xWt~$(69Dqtxgh`m literal 0 HcmV?d00001 diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fd6a6b1dfb203eed4750f07f794080fe51cbeef8 GIT binary patch literal 1150 zcmb_cJ&!?A5WSmhr|_z+6i-63rCK6{!cWlXy+|bJJ<%vth@c=EI<-n^;r_%|S%LPB-PYTJ$Pz;jkbc$xPiGIJ2UayC4w~O_9jnQa?cDs$iV1Q1i!~1@} zXAUjGU#(V1Bofg5fy?E>a5&^z7K;Uf!64%vj|Y><#No&xR5wYZ(O^HH&xhS^$F&ol z&*vGBMx$gpI2(EqezjU9M~n3$uJ%chuNl{UW@SS^*Z}`z1}bJv)L@; zkx1k&zgDZUpJ5nCrBX)c;%l zkNDDmzu(XG(+rYG|6{S(xBTh;Ny*o;EY8#Ic02dH*=!Jx#~G)4rFpm(xr_054BNI* zE|*a%l~AcvKr=;iR45b}FBXevwOX7ToguS#ecpfH diff --git a/static/icons/file-text.svg b/static/icons/file-text.svg new file mode 100644 index 0000000..4197ddd --- /dev/null +++ b/static/icons/file-text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons/github.svg b/static/icons/github.svg new file mode 100644 index 0000000..a1c5967 --- /dev/null +++ b/static/icons/github.svg @@ -0,0 +1 @@ + diff --git a/static/icons/matrix.svg b/static/icons/matrix.svg new file mode 100644 index 0000000..f37073d --- /dev/null +++ b/static/icons/matrix.svg @@ -0,0 +1 @@ + diff --git a/static/icons/rss.svg b/static/icons/rss.svg new file mode 100644 index 0000000..c9a1368 --- /dev/null +++ b/static/icons/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/manifest.json b/static/manifest.json new file mode 100644 index 0000000..013d4a6 --- /dev/null +++ b/static/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/static/ms-icon-144x144.png b/static/ms-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..3a6af1b7663ea3cfa8b235aa1d3d7158993ecd10 GIT binary patch literal 1578 zcmZ{kdpy)x6u_@X9+mK+OhVIQlZ~0tZ!_~FGvkpFqw%IC#+Vn4@fZjK#N&Z2qF~OWGWee>a0}@^c9GXW>DOz0K|U_KvD_-^T<}x7yvO? z049O}fKLOU6On(z%^ESt2Rl33gHNehof1S-7C2EIlwT^UtTb4g_Ez*K01ACh_GHhv zep!DY#luZcc_!gx&&y6B;qpOW?-pA8xO(B@%}}@6c#|Sx3JvX7jCvm$DlAh@Z%M_L zo0*K?TD{e@tgO?*`BZt1#>YwFEdR{)@u?=>-oVc2?j5n08yqAUoAE^hqLtOa%=}0j zdX)|bBmqSes_thG_?DJ+1&9_=O4rxy%H(vk1bJY7useS zkYWEX^Lf2nLifMsXvJ zS2M2&#-=P6+KhW(+t@=!g(o7e`z$oIHrr`QNR4Mxh&CHw`<50FK6``csqa&6DMi|T z*m`|et0?&A_AC#LJ-OA635j(TI}MDy@7`?k_D(F}y`rpZNrE=}TGxnAdg_@Zq}05V z7aG)&k4_$vOY~1q=yv_dO}+Ip&4oSWAxY9>Jvo4vdXUwNu;|=?kaRuHuOhj^Rc{_n z<;JZxxps>vHtQj)Q$6&Jv>uR~UwrB>46?H0ghkRd3DUQdUP|0M(tPu%_l~L)BJ1hi#9+aEq5BFw1Y`953^p^W>#f*3a+E`TZ^t3CfiJBL$<$3h`H^WHN!ify*T1w zHJo)uR$M+hV|R?`Q2*NhoA$qkB0J*sJCd{MK96UsMm)$<%@;EioZ2?XOpLy-s)@<= zS)(hAtjBJ9in{G4!Y>wOCOTYCwR4xw)eQIEq;A2b^^+riG$XJt!D~hFUGubyLK8GE zE~=?_yuVnz=ZXM-%zVDMMe}`uV0tStSsMMgk?mf}P?J6)>&o1YhzE~VSES>pQ?z$4 zQGMO7;!3Qb!9EV#g)ysMJ`x%hBzq(~uU$|`I=W!frW?2`gG{co`|^IzRsZQH__MA( z2FA`SEXu=`F+h~~2dvGgb=;0Oc}(J%(X<LUNGh%qmZ~+X{5HuR#N5h=8+%^i*tG`ajn%L#SLHQ*a=H2|k|+6A{iP)_A*q6^H7HPyn|bB0#up zcpScY7pen6)R)Ea;Knln*4Fk!ks>KI~22VbS+<8T{~Q z%)cea5b!vbWeCJ#5pZ-%h+!FQ31KaQA&3!d0YNMXZ;p7FBj<~o9Q=S}08S3B_La6l GqQ3zlFn^K& literal 0 HcmV?d00001 diff --git a/static/ms-icon-150x150.png b/static/ms-icon-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..7f615bd2ef0c3489f417b7d00955eb900ddd0c97 GIT binary patch literal 1653 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 literal 0 HcmV?d00001 diff --git a/static/ms-icon-70x70.png b/static/ms-icon-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..0054467ac7950d1c1b293593ceaf76533ef6c945 GIT binary patch literal 1039 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnD7Bp5NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^> z;_2(k{)~l#OHQ=oThk{72FBfQ{x82Iloq}nA+ zuJ|Lo+i?G-r&B{i0voy})m*&)|NnArt%aT|w6vvSkK~CoTWII&MFqyngTQ8yamXUDxJV&;S2``_b-W z97liNpQ!TBFSXs<E zq=TJy)Lv!@*Qw%ieYBD=irdfrJNu~R^a+`R>1Xce_nYlfGL5M$ z?%&t4#if3q^?jYj2?-Zwmp*=+FLUhA%ts5)oorxY;r;WB@$5~(G`(XTN(Ys)Xa5uc zhV3Mkl$56d4QsZz$ZeQv=jtWp>*VL=^_;0J`Je6nX3o6*ET{GyRw{h{kN?fF02a4i zNz=3|GalyfFoYFxuX(zOEf^THswJ)wB`Jv|saDBFsX&Us$iT=**T6*Az#_!Zz{=Rb z%FsgFz`)ADz*+uFAc}_E{FKbJO57TZoP6E_H7I~=D9%qSDNig)WymNgDJZtm*U!vN zOiu;k%;apn{G#+d=Vj*t)k=WWhGdlHCRtgzxR3PX|# z4f142%gjjydR;#^uOufwT|X_cEHgPjuUH=uvGsCI&`H kCML;AMkXd{CKh@?9eP0bRlL6U8)yTAr>mdKI;Vst05W8QG5`Po literal 0 HcmV?d00001 diff --git a/static/tmp-logo.png b/static/tmp-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..def7771b9558f28635a61b13eece8ae0c74c38bf GIT binary patch literal 3828 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 + + + + + + + + + + + + + + + {% block meta %} {% endblock %} + + +
+ {% include "nav.html" %} +
+ +
+
+ {% block content %} {% endblock %} +
+ {% include "footer.html" %} +
+ + diff --git a/templates/card.html b/templates/card.html new file mode 100644 index 0000000..cdf7503 --- /dev/null +++ b/templates/card.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/templates/foo.html b/templates/foo.html new file mode 100644 index 0000000..c9e8a63 --- /dev/null +++ b/templates/foo.html @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + diff --git a/templates/footer.html b/templates/footer.html new file mode 100644 index 0000000..9451175 --- /dev/null +++ b/templates/footer.html @@ -0,0 +1,53 @@ + diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..bce7e24 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,32 @@ +{% import "macros.html" as macros %} {% extends "base.html" %} {% block meta %} +{% set description = "Hostea: Dedicated managed Gitea hosting, including CI/CD and static pages with upgrades, backups and 24/7 monitoring" %} +{% set title = "Home" %} +{{ macros::get_meta_tags(title=title, description=description) }} +{% endblock meta %} {% block content %} + + +
+
+
+ +

HOSTEA

+

Gitea's Paradise

+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Impedit corporis + nihil laboriosam sequi aliquam unde id, aut numquam aperiam ipsam, iusto et + quas voluptatum voluptas. Quis nemo consequatur vel totam! +
+
+
+ +
+ +{% endblock content %} diff --git a/templates/macros.html b/templates/macros.html new file mode 100644 index 0000000..48520a3 --- /dev/null +++ b/templates/macros.html @@ -0,0 +1,170 @@ +{% macro social_link(name) %} + {% for var in config.extra.socials %} + {% if var.name == name %} + {{ var.link }} + {% endif %} + {% endfor %} +{% endmacro social_link %} + +{% macro cache_bust(path) %} + {{ get_url(path=path, cachebust=true) }}" +{% endmacro cache_bust %} + +{% macro social_link_icon(name, icon) %} + {% for var in config.extra.socials %} + {% if var.name == name %} + {% if var.name == "email" %} + + {% else %} + + {% endif %} + {% endif %} + {% endfor %} +{% endmacro social_link_icon %} + +{% macro get_month(month) %} + {% if month == 1 %} January + {% elif month == 2 %} February + {% elif month == 3 %} March + {% elif month == 4 %} April + {% elif month == 5 %} May + {% elif month == 6 %} June + {% elif month == 7 %} July + {% elif month == 8 %} August + {% elif month == 9 %} September + {% elif month == 10 %} October + {% elif month == 11 %} November + {% elif month == 12 %} December + {% else %} invalid date + {% endif %} +{% endmacro get_month %} + +{% macro get_meta_tags(title, description) %} + + {% set title = title ~ " | Hostea: Managed Gitea Hosting " %} + + + + + + + {{ title }} + + + + + {% if config.extra.author %} + + {% endif %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{% endmacro get_meta_tags %} + +{% macro nav_link(link, name) %} + +{% endmacro nav_link %} diff --git a/templates/nav.html b/templates/nav.html new file mode 100644 index 0000000..823a56e --- /dev/null +++ b/templates/nav.html @@ -0,0 +1,30 @@ +{% import "macros.html" as macros %} + + diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..abb9a32 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,16 @@ +{% import "macros.html" as macros %} +{% extends "base.html" %} {% block meta %} + +{% set description = page.description %} +{{ macros::get_meta_tags(title=page.title, description=description) }} + +{% endblock meta %} {% block content %} + +
+

{{ page.title }}

+
+ {{ page.content | safe }} +
+
+ +{% endblock content %}