Introduction
Introduction Statistics Contact Development Disclaimer Help
Revert "merge" - cl-yag - Common Lisp Yet Another website Generator
git clone git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws…
Log
Files
Refs
Tags
README
LICENSE
---
commit 4d6a22dcec3fc6754b817c6f01a4271bf9a93118
parent 20254fa11b441ca074130089703daa6f9b45282d
Author: Solene Rapenne <[email protected]>
Date: Tue, 5 Dec 2017 21:00:15 +0100
Revert "merge"
This reverts commit 20254fa11b441ca074130089703daa6f9b45282d.
Diffstat:
M README.md | 32 ++++++++++++++++-------------…
M data/README.md | 176 +++++++++++++++--------------…
M data/articles.lisp | 9 ++++++---
A data/css.md | 123 +++++++++++++++++++++++++++++…
A static/css/clym.css | 214 +++++++++++++++++++++++++++++…
A static/css/custom.css | 16 ++++++++++++++++
A static/css/pure_r1.0.0/LICENSE.md | 52 +++++++++++++++++++++++++++++…
A static/css/pure_r1.0.0/pure.css | 1508 +++++++++++++++++++++++++++++…
M static/css/style.css | 17 +++++++++++++++++
M templates/layout.tpl | 14 +++++++-------
A templates/layout.tpl_original | 34 +++++++++++++++++++++++++++++…
11 files changed, 2080 insertions(+), 115 deletions(-)
---
diff --git a/README.md b/README.md
@@ -1,9 +1,9 @@
-o# README
+# README
## Introduction
-cl-yag is a lightweight, static-site generator that produces **gopher** sites …
+cl-yag is a lightweight, static site generator that produces **gopher** sites …
The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.
It runs without Quicklisp.
@@ -117,13 +117,13 @@ The *config* variable is used to assign the following val…
- **:title**
- The title of the webpage
- **:description**
- - This text is used in the *description* field of the Atom RSS
+ - This text is used in the *description* field of the atom/rss feed.
- **:url**
- This needs to be the full(!) URL of your website, including(!) a final s…
- - MIND: If the url contains a tilde (~), it needs to get duplicated
+ - MIND: If the url contains a tilde (~), it needs to get duplicated.
- Example: ``https://mydomain/~~user/``
- **:rss-item-number**
- - This holds the number of latest(!) RSS items you want to get published w…
+ - This holds the number of latest(!) RSS items you want to get published.
- **html**
- ``t`` to export html website. Set ``nil`` to disable.
- **gopher**
@@ -131,9 +131,9 @@ The *config* variable is used to assign the following value…
- **gopher-path**
- This is the full path of the directory to access your gopher hole.
- **gopher-server**
- - Hostname of the gopher server. It needs to be included in every link.
+ - Hostname of the gopher server. It needs to be included in each link.
- **gopher-port**
- - tcp port of the gopher server. 70 is the default port. It needs to be in…
+ - tcp port of the gopher server. 70 is the default port. It needs to be in…
### The *articles* Variable
@@ -150,13 +150,13 @@ Of the following keywords, only ``:author`` and ``:short`…
- The ``:id`` field holds the filename of your post/page.
- Example: ``:id "2"`` will load file **data/2.md**. Use text instead …
- (See section: 'The **data/** Directory'.)
-- **:short**
- - The ``:short`` field's value is used for displaying a really short d…
- - If ``:short`` doesn't get a value, the full article gets displayed.
- - Hint: Use ``:short "view the article for the full text"``, if you do…
- **:tag**
- ``:tag`` field is used to create a "view" containing all articles of the…
- MIND: Whitespaces are used to separate tags and are not allowed in(…
+- **:tiny**
+ - The ``:tiny`` field's value is used for displaying a really short de…
+ - If ``:tiny`` doesn't get a value, the full article gets displayed.
+ - Hint: Use ``:tiny "Read the full article for more information."``, i…
- **:title**
- The ``:title`` field's value sets your post's title, its first headl…
@@ -169,7 +169,7 @@ Edit **data/articles.lisp** and add a new list to the *arti…
:id "2"
:date "29 April 2016"
:author "Solène"
- :short "I will explain how to use the generator"
+ :tiny "Read more about how I use cl-yag."
:tag "example help code")
Then write a corresponding **data/2.md** file, using markdown.
@@ -202,9 +202,9 @@ This will produce **output/html/somepage.html**.
### Howto Use Another Common Lisp Interpreter
-cl-yags default Lisp interpreter is **sbcl**.
-If you want to use a different lisp interpreter you need to set the
-variable *LISP* to the name of your binary, when calling ``make``:
+cl-yags default Lisp interpreter is **sbcl**. If you want to use a
+different interpreter you need to set the variable *LISP* to the name
+of your binary, when calling ``make``:
make LISP=ecl
@@ -262,7 +262,7 @@ themed layouts.
If you want some deeply refined, cross-browser compatible, responsive,
webscale style sheets, you need to create them yourself. However,
cl-yag will work nicely with them and if you want to make your
-stylesheets a part of cl-yag you're very welcome to contact me.
+style sheets a part of cl-yag you're very welcome to contact me.
# Hacking cl-yag
diff --git a/data/README.md b/data/README.md
@@ -3,7 +3,7 @@
## Introduction
-cl-yag is a very lightweight, 'static site'-generator that produces **gopher**…
+cl-yag is a lightweight, static site generator that produces **gopher** sites …
The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.
It runs without Quicklisp.
@@ -21,20 +21,16 @@ gopher-space](gopher://dataswamp.org/1/~solene/).
To use cl-yag you'll need:
1. A Common Lisp Interpreter
- - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.
- - **Embeddable Common Lisp (ECL)** will do fine as well.
+ - cl-yag's current default is [Steel Bank Common Lisp (SBCL)](http://www.s…
+ - [Embeddable Common Lisp (ECL)](https://common-lisp.net/project/ecl/) wil…
2. A Markdown-to-HTML Converter
- - cl-yag's current default is **multimarkdown**.
-3. BSD Make
- - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible wi…
- - You need to install a port of the NetBSD make tool, called **bmake**.
+ - cl-yag's current default is [multimarkdown](http://fletcherpenney.net/mu…
## Usage
-Go into your project's directory and type ``make``. You'll find your new websi…
-If you want to get rid of everything in your 'output/' subdirectories,
-type ``make clean``.
+Go into your project's directory and type ``make``. You'll find your new websi…
+If you want to get rid of everything in your **output/** subdirectories, type …
For further commands: read the Makefile.
Read in the follwing section where to find it.
@@ -73,25 +69,25 @@ least the following files and folders:
- This is cl-yag's core library.
- **static/**
- This directory holds content, that needs to be published without being c…
- - If you come from 'non-static CMS'-Country: 'static/' holds, what you…
+ - If you come from 'non-static CMS'-Country: **static/** holds, what y…
- **templates/**
- The templates in this directory provide the structural skeleton(s) of th…
- **output/**
- cl-yag puts in this directory everything ready to get deployed.
- - Because cl-yag generates not only HTML, but gopher-compliant pages a…
- - **gopher/** : contains the website for gopher,
- - **html/** : contains the website in HTML.
+ - Because cl-yag generates not only HTML, but gopher-compliant pages a…
+ - **gopher/** contains the website for gopher,
+ - **html/** contains the website in HTML.
And there is the **data/** directory, which is important enough to get a subsu…
-### The 'data/' Directory
+### The data/ Directory
This directory is crucial for the usage of cl-yag.
**data/** contains
-- the **articles.lisp configuration file**, which defines important metadata f…
-- It also holds **${id}.md**-files, which are holding your posts' and pages' c…
+- the **articles.lisp** configuration file, which defines important metadata f…
+- It also holds **${id}.md** files, which are holding your posts' (or pages') …
For more information: Read section 'Configuration'.
@@ -99,172 +95,174 @@ For more information: Read section 'Configuration'.
## Configuration
cl-yag's main configuration file is **data/articles.lisp**.
-In order to have a reliably running implementation of cl-yag, you have
+In order to have a running implementation of cl-yag, you have
to set most of the values in this file.
**data/articles.lisp** has two parts:
-1. A variable called **config**. It defines global values, that define your we…
-2. A variable called **articles**. It defines local values, that - in turn - d…
+1. A variable called *config*. Its values define your webpage.
+2. A variable called *articles*. Its values define your posts.
-Values are assigned by placing a string (e.g. "foo") or a boolean
-(i.e. 't' or 'nil') behind a keyword (e.g. ':title').
+Values are assigned by placing a string (e.g. ``"foo"``) or a boolean
+(i.e. ``t`` or ``nil``) behind a keyword (e.g. ``:title``).
-### The **config** Variable
+### The *config* Variable
-The **config** variable is used to assign the following values:
+The *config* variable is used to assign the following values:
- **:webmaster**
- The name of the default(!) author.
- - :webmaster gets used, if **:author** is omitted. (see below: 'The **…
+ - ``:webmaster`` gets used, if ``:author`` is omitted. (See below: 'Th…
- **:title**
- The title of the webpage
- **:description**
- - This text is used in the *description* field of the Atom RSS
+ - This text is used in the *description* field of the atom/rss feed.
- **:url**
- This needs to be the full(!) URL of your website, including(!) a final s…
- - MIND: If the url contains a tilde (~), it needs to get duplicated
- - Example: https://mydomain/~~user/ is a valid url.
+ - MIND: If the url contains a tilde (~), it needs to get duplicated.
+ - Example: ``https://mydomain/~~user/``
- **:rss-item-number**
- - This holds the number of latest(!) RSS items you want to get published w…
+ - This holds the number of latest(!) RSS items you want to get published.
- **html**
- - *t* to export html website. Set *nil* to disable.
+ - ``t`` to export html website. Set ``nil`` to disable.
- **gopher**
- - *t* to export gopher website. Set *nil* to disable.
+ - ``t`` to export gopher website. Set ``nil`` to disable.
- **gopher-path**
- This is the full path of the directory to access your gopher hole.
- **gopher-server**
- - Hostname of the gopher server. Because gopher doesn't allow relative lin…
+ - Hostname of the gopher server. It needs to be included in each link.
- **gopher-port**
- - tcp port of the gopher server. 70 is the default port. It need to be inc…
+ - tcp port of the gopher server. 70 is the default port. It needs to be in…
-### The **articles** Variable
+### The *articles* Variable
-The **articles** variable holds per page/post-metadata.
-Of the following fields, only the *:author* and *:short* description could be …
+The *articles* variable holds post metadata.
+So you need to create an entry in the *articles* variable for each of your pos…
+
+Of the following keywords, only ``:author`` and ``:short`` can be omitted.
-- **:short**
- - The _:short_ field's value is used for displaying a really short des…
- - If _:short_ doesn't get a value, the full article gets displayed.
- - Hint: Use ``:short "view the article for the full text"``, if you do…
-- **:id_**
- - The _:id_ field holds the filename of your post/page.
- - Example: ``:id "2"`` will load file ``data/2.md``. Use text instead …
- - (See section: 'The **data/** Directory'.)
- **:author**
- - The _:author_ field is used to display the article' author.
- - If you omit it, the generator will take the name from the **:webmaster*…
+ - The ``:author`` field is used to display the article's author.
+ - If you omit it, the generator will take the name from the ``:webmaster``…
+- **:id**
+ - The ``:id`` field holds the filename of your post/page.
+ - Example: ``:id "2"`` will load file **data/2.md**. Use text instead …
+ - (See section: 'The **data/** Directory'.)
- **:tag**
- - _:tag_ field is used to create a "view" containing all articles of the s…
- - MIND: Whitespaces are not allowed in(!) tags.
+ - ``:tag`` field is used to create a "view" containing all articles of the…
+ - MIND: Whitespaces are used to separate tags and are not allowed in(…
+- **:tiny**
+ - The ``:tiny`` field's value is used for displaying a really short de…
+ - If ``:tiny`` doesn't get a value, the full article gets displayed.
+ - Hint: Use ``:tiny "Read the full article for more information."``, i…
+- **:title**
+ - The ``:title`` field's value sets your post's title, its first headl…
## Howto Create A New Post
-Edit data/articles.lisp and add a new list to the *articles* variable:
+Edit **data/articles.lisp** and add a new list to the *articles* variable:
(list :title "How do I use cl-yag"
:id "2"
:date "29 April 2016"
:author "Solène"
- :short "I will explain how to use the generator"
+ :tiny "Read more about how I use cl-yag."
:tag "example help code")
-Then write a corresponding ``2.md`` file, using markdown.
+Then write a corresponding **data/2.md** file, using markdown.
+
## Howto Publish A Post
I prepared a Makefile to facilitate the process of generating and
-publishing your static sites.
-
+publishing your static sites.
All you need to do in order to publish is to go into your cl-yag
-directory and type "make".
+directory and type ``make``.
-The 'make' command does create html and gopher files in the defined
-**output/** location (which can be a symbolic link pointing to some
-other directory, somewhere else on your machine).
+The make command creates html and gopher files in the defined location.
+The default is the **output/** directory, but you can use a symbolic link
+pointing to some other directory as well.
## Howto Add A New Page
You may want to have some dedicated pages besides the index or a post.
-To create one, edit the **generate-site** function in cl-yag's
-generator.lisp and add a function call, like this:
+To create one, edit the *generate-site* function in cl-yag's
+**generator.lisp** and add a function call, like this:
(generate "somepage.html" (load-file "data/mypage.html"))
-This will produce the file **somepage.html** in the output folder.
+This will produce **output/html/somepage.html**.
## Further Customization
### Howto Use Another Common Lisp Interpreter
-cl-yags default Lisp interpreter is **sbcl**.
-If you want to use a different lisp interpreter you need to set the
-variable 'LISP' to the name of your binary, when calling ``make``.
+cl-yags default Lisp interpreter is **sbcl**. If you want to use a
+different interpreter you need to set the variable *LISP* to the name
+of your binary, when calling ``make``:
- `make LISP=ecl`
+ make LISP=ecl
### Using git Hooks For Publishing
You may customize your publishing-process further, e.g. by using a git
-hook to call 'make' after each change in the repo so your website gets
-updated automatically.
+hook to call the make program after each change in the repo so your
+website gets updated automatically.
## Page-Includes
Here is an example code, if you want to include another page in the template:
-1. Create **template/panel.tpl** with the html you want to include.
-2. Add a string in the target file, where the replacement should occur.
- In this case, we choose **%%Panel%%** for a string, and, because we want th…
+1. Create **templates/panel.tpl** containing the html you want to include.
+2. Add a replacement-string in the target file, where the replacement should o…
+ In this case, we choose **%%Panel%%** for a string, and, because we want th…
3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accord…
This is done by adding the following template function call:
- "**(template "%%Panel%%" (load-file "template/panel.tpl"))**"
-
-(Note: You can insert your text directly into the layout template file
-as well.)
+ (template "%%Panel%%" (load-file "templates/panel.tpl"))
+Another valid approach is to writer your html directly into **templates/layout…
## Known Limitations
### Use ~~ To Create ~
-cl-yag crashes if you use a single "**~**" caracter inside one data
-structure in **articles.lisp** files, because Common Lisp employs the
-tilde as a prefix to indicate format specifiers in format strings.
+cl-yag crashes if you use a single "~" character inside
+**templates/articles.lisp**, because Common Lisp employs the tilde as a
+prefix to indicate format specifiers in format strings.
-In order to use a literal `~` - e.g. for creating a :title or :url
-reference - you have to **escape** the tilde **by duplicating** it:
-``~~``.
-(See _:url_ in section 'Configuration').
+In order to use a literal `~` -- e.g. for creating a ``:title`` or
+``:url`` reference -- you have to *escape* the tilde *by
+duplicating* it: ``~~``. (See ``:url`` in section 'Configuration').
### Posting Without Tagging
-cl-yag allows posts to be 'untagged'- but with the default template
-you'll get a line below your title that displays: "Tags: ".
+cl-yag allows posts without tags, but, using the default
+**templates/layout.tpl**, you'll get a line below your title that
+displays: "Tags: ".
(Note: If you are looking for a way to contribute this may be a task for you.)
### A Note On Themes
-Although cl-yag **may** ship with a **minimalistic** template, cl-yag
-focuses only on generating html- and gopher-compliant structural
-markup - not themed layouts.
+Although cl-yag may ship with a minimalistic template, cl-yag focuses
+on generating html- and gopher-compliant structural markup - not
+themed layouts.
If you want some deeply refined, cross-browser compatible, responsive,
-webscale style-sheet, you need to create it yourself.
-However, cl-yag will work nicely with it and if you want to make your
-stylesheets a part of cl-yag you're very welcome to contact me.
+webscale style sheets, you need to create them yourself. However,
+cl-yag will work nicely with them and if you want to make your
+style sheets a part of cl-yag you're very welcome to contact me.
# Hacking cl-yag
@@ -275,4 +273,4 @@ If you want to contribute, feel free to contact me and/or t…
- If you are looking for a way to contribute:
- You could find a way to "sanitize" cl-yag's behaviour regarding the tild…
- Also see: 'Note' in 'Posting Without Tagging';
- - Also see: 'A Note On Themes.
+ - Also see: 'A Note On Themes'.
diff --git a/data/articles.lisp b/data/articles.lisp
@@ -33,11 +33,14 @@
(defvar *articles*
(list
+ ;; CSS
+ (list :id "css" :date "02.12.2017" :tag "cl-yag"
+ :title "CSS For cl-yag" :author "lambda" :tiny "Read more")
;; README
- (list :id "README" :date "23 November 2017" :tag "cl-yag README"
- :title "README" :author "lambda" :short "cl-yag's README got rewo…
+ (list :id "README" :date "23.11.2017" :tag "cl-yag"
+ :title "README" :author "lambda" :tiny "Read cl-yag's README")
;; 1
- (list :id "1" :date "29 April 2016":tag "pony code"
+ (list :id "1" :date "29.04.2016" :tag "pon…
:title "My first message" :short "This is my first message" :author "…
))
diff --git a/data/css.md b/data/css.md
@@ -0,0 +1,123 @@
+# CSS For cl-yag
+
+cl-yag provides you with a default theme and a useful approach to
+handle CSS style sheets as well as CSS frameworks.
+
+
+## Where The Style Sheets Live
+
+All of cl-yag's style sheets are located in **static/css/**.
+Currently there are the following files:
+
+ css/
+ |-- clym.css
+ |-- custom.css
+ |-- pure_r1.0.0/
+ | |-- LICENSE.md
+ | `-- pure.css
+ `-- style.css
+
+
+## style.css -- One Sheet To Rule Them All
+
+In order to keep it simple cl-yag uses **static/css/style.css** to
+administrate all of its style sheets. Use the ``@import`` rule to
+include your own, or comments to get rid of what is already there -
+but mind the [cascade](https://www.w3.org/TR/css-cascade-3/ "W3C: CSS Cascadin…
+
+Currently, **style.css** looks like this:
+
+ /* ===================================================================…
+ /* style.css for cl-yag */
+ /* ===================================================================…
+ @charset "utf-8";
+
+
+ /* ~ PURE ~…
+ @import url("pure_r1.0.0/pure.css");
+
+
+ /* ~ CLYM ~…
+ @import url("clym.css");
+
+
+ /* ~ LAST ENTRY ~…
+ /* ~ use custom.css for overriding rules ~…
+ @import url("custom.css");
+
+
+
+## Pure -- "A Set Of Small, Responsive CSS Modules"
+
+cl-yag uses a style sheet called **pure.css**, taken from
+[Pure](https://purecss.io/ "purecss.io"), a minimal, BSD licensed CSS
+framework, to provide a set of expected UI features, among which are
+sane resets (such as
+[normalize.css](https://necolas.github.io/normalize.css/
+"Normalize.css - A modern, HTML5-ready alternative to CSS resets")'s
+reset rules) and usable menus.
+
+To deactivate Pure, put the *PURE.CSS* ``@import`` rule in
+**static/css/style.css** in comments and re-run ``make``.
+
+
+## clym -- A Default Theme
+
+Additionally, cl-yag comes with its first theme: *clym*.
+
+*clym* stands for *cl-yag minimal*. It is a set of css rules designed to
+work with cl-yag's html skeleton. It provides an unobtrusive color
+scheme, basic typography, as well as basic responsiveness. You'll find
+it in **static/css/clym.css**.
+
+**clym.css** doesn't provide neither css resets nor a menu layout. This
+is handled by [Pure](https://purecss.io/ "purecss.io")'s
+**pure.css**. Further, it doesn't need any JavaScript.
+
+If you don't like *clym*, put comments around the line ``@import
+url("clym.css");`` in **static/css/style.css**, around all pure-rules
+in **static/css/custom.css**, and re-run ``make``.
+
+
+## **custom.css**
+
+For information about **custom.css** you need to read it, as well as
+the following section "Working With Style Sheets".
+
+
+## Working With Style Sheets
+
+### Current Styles And Minor Tweaks
+
+If you are already using a combination of style sheets and you need to
+adjust some parts of the layout, use cl-yag's
+**static/css/custom.css**. It is currently used to override Pure's
+default layout for horizontal menus with *clym*'s colorscheme.
+
+#### MIND
+
+- In order to override rules located in all previous(!) style sheets
+**custom.css** needs to get sourced in as the last(!) file in
+**static/css/style.css** (see section: "style.css – One Sheet To Rule Them
+All").
+- Respect the [cascade](https://www.w3.org/TR/css-cascade-3/ "W3C: CSS Cascadi…
+
+
+### Frameworks
+
+CSS frameworks provide an easy way to create your own theme. To make use
+of a framework's rulesets,
+
+- its style sheets need to get included via your **static/css/style.css**,
+- their ids and classes need to get wired into cl-yag's template files and
+- the template files need to get used by cl-yag's **generator.lisp**.
+
+So you need to edit cl-yag's template files in **templates/** and - in
+case you've choosen to rename your templates - you need to adjust their
+corresponding paths and filenames in **generator.lisp**.
+
+
+
+
+
+
diff --git a/static/css/clym.css b/static/css/clym.css
@@ -0,0 +1,214 @@
+/*
+ * OpenBSD License
+ *
+ * Copyright (c) 2017 lambda <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* ====================================================== */
+/* A basic style for wrapper main footer */
+/* ====================================================== */
+html{
+ overflow-y:scroll;
+}
+html, body {
+ margin: 0em;
+ padding: 0em;
+ min-height:100%;
+ height: 100%;
+}
+body {
+ position: relative;
+ margin: 0 auto;
+ padding: 0em 1em;
+}
+#wrapper {
+ position: relative;
+ width:100%;
+ min-height: 100%;
+ margin: 0em auto;
+}
+main {
+ padding-bottom: 3em;
+ height:100%;
+}
+main:after {
+ display: block;
+ width: 100%;
+ content:"";
+ clear: both;
+}
+footer {
+ position: absolute;
+ width: 100%;
+ height: 3em;
+ bottom: 0em;
+ text-align: center;
+}
+footer > p {
+ display: block;
+ text-align: center;
+ font-size: 0.9em;
+}
+/* ====================================================== */
+/* A basic style for header */
+/* ====================================================== */
+/* All Tags */
+header > div {
+ display: block;
+ margin: 0.5em auto auto auto;
+ padding: 1ex;
+ float: right;
+ border: 1px solid transparent;
+ min-width: auto;
+ max-width: 100%;
+}
+/* ====================================================== */
+/* A basic responsive'ish ruleset */
+/* ====================================================== */
+@media only screen and (min-width: 360px) {
+ #wrapper {
+ font-size: 0.95em;
+ }
+}
+@media only screen and (min-width: 800px) {
+ #wrapper {
+ max-width: 750px;
+ font-size: 1em;
+ }
+}
+@media only screen and (min-width: 1000px) {
+ #wrapper {
+ max-width: 800px;
+ }
+}
+@media only screen and (min-width: 1025px) {
+ #wrapper {
+ max-width: 1000px;
+ }
+}
+/* ====================================================== */
+/* A basic theme */
+/* ====================================================== */
+html, body {
+ font-family: Arial, sans;
+ color: #1f1f1f ;
+}
+main {
+ line-height: 1.3em;
+}
+h1,h2,h3 {
+ font-weight: bold;
+ line-height: 1.8;
+ margin: 0em;
+}
+h1 {
+ font-size: 175%;
+}
+h2 {
+ font-size: 150%;
+}
+h3 {
+ font-size: 125%;
+}
+p {
+ text-align: justify;
+}
+a {
+ color: #3b5487;
+ text-decoration: none;
+}
+a:active, a:hover, a:focus {
+ color: #203785;
+ text-decoration: underline;
+}
+footer > p {
+ display: block;
+ text-align: center;
+ font-size: 0.9em;
+}
+/* default style for 'information' */
+article > header {
+ font-weight: 900;
+ font-size: 90%;
+ text-align: center;
+}
+article > header > h1 > a {
+ color: #1f1f1f ;
+ text-decoration: none;
+}
+/* ====================================================== */
+/* A basic style for code */
+/* ====================================================== */
+code {
+ display:inline-block;
+ padding: 1px 5px;
+ border-radius: 3px;
+ background-color: #e3f0ff;
+ font-weight: 700;
+ font-size: 0.8em;
+ color: #3c3f42;
+}
+pre > code {
+ display: block;
+ height: auto;
+ padding: 1em;
+}
+/* ====================================================== */
+/* A basic style for posts */
+/* ====================================================== */
+article {
+ display: block;
+ float: left;
+ clear:both;
+ width: 100%;
+}
+article:after {
+ display:block;
+ height: 1em;
+ content:"";
+ clear:both;
+}
+article > header {
+ display:block;
+ margin: 0em;
+ padding: 1em;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ -webkit-box-shadow: 1px 1px 5px 1px #1f1f1f;
+ box-shadow: 1px 1px 5px 1px #1f1f1f;
+}
+article > header:after {
+ display:block;
+ width:100%;
+ height: auto;
+ content:"";
+ clear:both;
+}
+article > header > .information {
+ font-size: 80%;
+}
+article > header > h1 {
+ float: left;
+ margin: auto 1em;
+}
+article > header > p {
+ float: left;
+ margin-top: 5px;
+}
+article > header + h1 {
+ margin-top: 1em;
+}
diff --git a/static/css/custom.css b/static/css/custom.css
@@ -0,0 +1,16 @@
+/* ==================================================================== */
+ /* custom.css */
+/* ==================================================================== */
+/* use this file to tweak your styles by overriding others */
+
+
+/* Override some of pure.css's menu rules to get clym's */
+a.pure-menu-link {
+ color: #3b5487;
+ text-decoration: none;
+ font-weight: 700;
+ text-transform: uppercase;
+}
+a.pure-menu-link:active, a.pure-menu-link:hover, a.pure-menu-link:focus {
+ color: #203785;
+}
diff --git a/static/css/pure_r1.0.0/LICENSE.md b/static/css/pure_r1.0.0/LICENSE…
@@ -0,0 +1,52 @@
+Software License Agreement (BSD License)
+========================================
+
+Copyright 2014 Yahoo! Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the Yahoo! Inc. nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Normalize.css License
+=====================
+
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies …
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNE…
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/static/css/pure_r1.0.0/pure.css b/static/css/pure_r1.0.0/pure.css
@@ -0,0 +1,1508 @@
+/*!
+Pure v1.0.0
+Copyright 2013 Yahoo!
+Licensed under the BSD License.
+https://github.com/yahoo/pure/blob/master/LICENSE.md
+*/
+/*!
+normalize.css v^3.0 | MIT License | git.io/normalize
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
+ * without disabling user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== …
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== …
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability of focused elements when they are also in an
+ * active/hover state.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== …
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== …
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== …
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== …
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ box-sizing: content-box; /* 2 */
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== …
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+/*csslint important:false*/
+
+/* ==========================================================================
+ Pure Base Extras
+ ========================================================================== …
+
+/**
+ * Extra rules that Pure adds on top of Normalize.css
+ */
+
+/**
+ * Always hide an element when it has the `hidden` HTML attribute.
+ */
+
+.hidden,
+[hidden] {
+ display: none !important;
+}
+
+/**
+ * Add this class to an image to make it fit within it's fluid parent wrapper …
+ * aspect ratio.
+ */
+.pure-img {
+ max-width: 100%;
+ height: auto;
+ display: block;
+}
+
+/*csslint regex-selectors:false, known-properties:false, duplicate-properties:…
+
+.pure-g {
+ letter-spacing: -0.31em; /* Webkit: collapse white-space between units */
+ *letter-spacing: normal; /* reset IE < 8 */
+ *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */
+ text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLe…
+
+ /*
+ Sets the font stack to fonts known to work properly with the above letter
+ and word spacings. See: https://github.com/yahoo/pure/issues/41/
+
+ The following font stack makes Pure Grids work on all known environments.
+
+ * FreeSans: Ships with many Linux distros, including Ubuntu
+
+ * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and
+ Arial to get picked up by the browser, even though neither is available
+ in Chrome OS.
+
+ * Droid Sans: Ships with all versions of Android.
+
+ * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows.
+ */
+ font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif;
+
+ /* Use flexbox when possible to avoid `letter-spacing` side-effects. */
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-flow: row wrap;
+ -ms-flex-flow: row wrap;
+ flex-flow: row wrap;
+
+ /* Prevents distributing space between rows */
+ -webkit-align-content: flex-start;
+ -ms-flex-line-pack: start;
+ align-content: flex-start;
+}
+
+/* IE10 display: -ms-flexbox (and display: flex in IE 11) does not work inside…
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ table .pure-g {
+ display: block;
+ }
+}
+
+/* Opera as of 12 on Windows needs word-spacing.
+ The ".opera-only" selector is used to prevent actual prefocus styling
+ and is not required in markup.
+*/
+.opera-only :-o-prefocus,
+.pure-g {
+ word-spacing: -0.43em;
+}
+
+.pure-u {
+ display: inline-block;
+ *display: inline; /* IE < 8: fake inline-block */
+ zoom: 1;
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ text-rendering: auto;
+}
+
+/*
+Resets the font family back to the OS/browser's default sans-serif font,
+this the same font stack that Normalize.css sets for the `body`.
+*/
+.pure-g [class *= "pure-u"] {
+ font-family: sans-serif;
+}
+
+.pure-u-1,
+.pure-u-1-1,
+.pure-u-1-2,
+.pure-u-1-3,
+.pure-u-2-3,
+.pure-u-1-4,
+.pure-u-3-4,
+.pure-u-1-5,
+.pure-u-2-5,
+.pure-u-3-5,
+.pure-u-4-5,
+.pure-u-5-5,
+.pure-u-1-6,
+.pure-u-5-6,
+.pure-u-1-8,
+.pure-u-3-8,
+.pure-u-5-8,
+.pure-u-7-8,
+.pure-u-1-12,
+.pure-u-5-12,
+.pure-u-7-12,
+.pure-u-11-12,
+.pure-u-1-24,
+.pure-u-2-24,
+.pure-u-3-24,
+.pure-u-4-24,
+.pure-u-5-24,
+.pure-u-6-24,
+.pure-u-7-24,
+.pure-u-8-24,
+.pure-u-9-24,
+.pure-u-10-24,
+.pure-u-11-24,
+.pure-u-12-24,
+.pure-u-13-24,
+.pure-u-14-24,
+.pure-u-15-24,
+.pure-u-16-24,
+.pure-u-17-24,
+.pure-u-18-24,
+.pure-u-19-24,
+.pure-u-20-24,
+.pure-u-21-24,
+.pure-u-22-24,
+.pure-u-23-24,
+.pure-u-24-24 {
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ text-rendering: auto;
+}
+
+.pure-u-1-24 {
+ width: 4.1667%;
+ *width: 4.1357%;
+}
+
+.pure-u-1-12,
+.pure-u-2-24 {
+ width: 8.3333%;
+ *width: 8.3023%;
+}
+
+.pure-u-1-8,
+.pure-u-3-24 {
+ width: 12.5000%;
+ *width: 12.4690%;
+}
+
+.pure-u-1-6,
+.pure-u-4-24 {
+ width: 16.6667%;
+ *width: 16.6357%;
+}
+
+.pure-u-1-5 {
+ width: 20%;
+ *width: 19.9690%;
+}
+
+.pure-u-5-24 {
+ width: 20.8333%;
+ *width: 20.8023%;
+}
+
+.pure-u-1-4,
+.pure-u-6-24 {
+ width: 25%;
+ *width: 24.9690%;
+}
+
+.pure-u-7-24 {
+ width: 29.1667%;
+ *width: 29.1357%;
+}
+
+.pure-u-1-3,
+.pure-u-8-24 {
+ width: 33.3333%;
+ *width: 33.3023%;
+}
+
+.pure-u-3-8,
+.pure-u-9-24 {
+ width: 37.5000%;
+ *width: 37.4690%;
+}
+
+.pure-u-2-5 {
+ width: 40%;
+ *width: 39.9690%;
+}
+
+.pure-u-5-12,
+.pure-u-10-24 {
+ width: 41.6667%;
+ *width: 41.6357%;
+}
+
+.pure-u-11-24 {
+ width: 45.8333%;
+ *width: 45.8023%;
+}
+
+.pure-u-1-2,
+.pure-u-12-24 {
+ width: 50%;
+ *width: 49.9690%;
+}
+
+.pure-u-13-24 {
+ width: 54.1667%;
+ *width: 54.1357%;
+}
+
+.pure-u-7-12,
+.pure-u-14-24 {
+ width: 58.3333%;
+ *width: 58.3023%;
+}
+
+.pure-u-3-5 {
+ width: 60%;
+ *width: 59.9690%;
+}
+
+.pure-u-5-8,
+.pure-u-15-24 {
+ width: 62.5000%;
+ *width: 62.4690%;
+}
+
+.pure-u-2-3,
+.pure-u-16-24 {
+ width: 66.6667%;
+ *width: 66.6357%;
+}
+
+.pure-u-17-24 {
+ width: 70.8333%;
+ *width: 70.8023%;
+}
+
+.pure-u-3-4,
+.pure-u-18-24 {
+ width: 75%;
+ *width: 74.9690%;
+}
+
+.pure-u-19-24 {
+ width: 79.1667%;
+ *width: 79.1357%;
+}
+
+.pure-u-4-5 {
+ width: 80%;
+ *width: 79.9690%;
+}
+
+.pure-u-5-6,
+.pure-u-20-24 {
+ width: 83.3333%;
+ *width: 83.3023%;
+}
+
+.pure-u-7-8,
+.pure-u-21-24 {
+ width: 87.5000%;
+ *width: 87.4690%;
+}
+
+.pure-u-11-12,
+.pure-u-22-24 {
+ width: 91.6667%;
+ *width: 91.6357%;
+}
+
+.pure-u-23-24 {
+ width: 95.8333%;
+ *width: 95.8023%;
+}
+
+.pure-u-1,
+.pure-u-1-1,
+.pure-u-5-5,
+.pure-u-24-24 {
+ width: 100%;
+}
+.pure-button {
+ /* Structure */
+ display: inline-block;
+ zoom: 1;
+ line-height: normal;
+ white-space: nowrap;
+ vertical-align: middle;
+ text-align: center;
+ cursor: pointer;
+ -webkit-user-drag: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+}
+
+/* Firefox: Get rid of the inner focus border */
+.pure-button::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+/* Inherit .pure-g styles */
+.pure-button-group {
+ letter-spacing: -0.31em; /* Webkit: collapse white-space between units */
+ *letter-spacing: normal; /* reset IE < 8 */
+ *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */
+ text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLe…
+}
+
+.opera-only :-o-prefocus,
+.pure-button-group {
+ word-spacing: -0.43em;
+}
+
+.pure-button-group .pure-button {
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ text-rendering: auto;
+}
+
+/*csslint outline-none:false*/
+
+.pure-button {
+ font-family: inherit;
+ font-size: 100%;
+ padding: 0.5em 1em;
+ color: #444; /* rgba not supported (IE 8) */
+ color: rgba(0, 0, 0, 0.80); /* rgba supported */
+ border: 1px solid #999; /*IE 6/7/8*/
+ border: none rgba(0, 0, 0, 0); /*IE9 + everything else*/
+ background-color: #E6E6E6;
+ text-decoration: none;
+ border-radius: 2px;
+}
+
+.pure-button-hover,
+.pure-button:hover,
+.pure-button:focus {
+ /* csslint ignore:start */
+ filter: alpha(opacity=90);
+ /* csslint ignore:end */
+ background-image: -webkit-linear-gradient(transparent, rgba(0,0,0, 0.05) 4…
+ background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba…
+}
+.pure-button:focus {
+ outline: 0;
+}
+.pure-button-active,
+.pure-button:active {
+ box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) i…
+ border-color: #000\9;
+}
+
+.pure-button[disabled],
+.pure-button-disabled,
+.pure-button-disabled:hover,
+.pure-button-disabled:focus,
+.pure-button-disabled:active {
+ border: none;
+ background-image: none;
+ /* csslint ignore:start */
+ filter: alpha(opacity=40);
+ /* csslint ignore:end */
+ opacity: 0.40;
+ cursor: not-allowed;
+ box-shadow: none;
+ pointer-events: none;
+}
+
+.pure-button-hidden {
+ display: none;
+}
+
+.pure-button-primary,
+.pure-button-selected,
+a.pure-button-primary,
+a.pure-button-selected {
+ background-color: rgb(0, 120, 231);
+ color: #fff;
+}
+
+/* Button Groups */
+.pure-button-group .pure-button {
+ margin: 0;
+ border-radius: 0;
+ border-right: 1px solid #111; /* fallback color for rgba() for IE7/8 */
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
+
+}
+
+.pure-button-group .pure-button:first-child {
+ border-top-left-radius: 2px;
+ border-bottom-left-radius: 2px;
+}
+.pure-button-group .pure-button:last-child {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-right: none;
+}
+
+/*csslint box-model:false*/
+/*
+Box-model set to false because we're setting a height on select elements, which
+also have border and padding. This is done because some browsers don't render
+the padding. We explicitly set the box-model for select elements to border-box,
+so we can ignore the csslint warning.
+*/
+
+.pure-form input[type="text"],
+.pure-form input[type="password"],
+.pure-form input[type="email"],
+.pure-form input[type="url"],
+.pure-form input[type="date"],
+.pure-form input[type="month"],
+.pure-form input[type="time"],
+.pure-form input[type="datetime"],
+.pure-form input[type="datetime-local"],
+.pure-form input[type="week"],
+.pure-form input[type="number"],
+.pure-form input[type="search"],
+.pure-form input[type="tel"],
+.pure-form input[type="color"],
+.pure-form select,
+.pure-form textarea {
+ padding: 0.5em 0.6em;
+ display: inline-block;
+ border: 1px solid #ccc;
+ box-shadow: inset 0 1px 3px #ddd;
+ border-radius: 4px;
+ vertical-align: middle;
+ box-sizing: border-box;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form input:not([type]) {
+ padding: 0.5em 0.6em;
+ display: inline-block;
+ border: 1px solid #ccc;
+ box-shadow: inset 0 1px 3px #ddd;
+ border-radius: 4px;
+ box-sizing: border-box;
+}
+
+
+/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. …
+/* May be able to remove this tweak as color inputs become more standardized a…
+.pure-form input[type="color"] {
+ padding: 0.2em 0.5em;
+}
+
+
+.pure-form input[type="text"]:focus,
+.pure-form input[type="password"]:focus,
+.pure-form input[type="email"]:focus,
+.pure-form input[type="url"]:focus,
+.pure-form input[type="date"]:focus,
+.pure-form input[type="month"]:focus,
+.pure-form input[type="time"]:focus,
+.pure-form input[type="datetime"]:focus,
+.pure-form input[type="datetime-local"]:focus,
+.pure-form input[type="week"]:focus,
+.pure-form input[type="number"]:focus,
+.pure-form input[type="search"]:focus,
+.pure-form input[type="tel"]:focus,
+.pure-form input[type="color"]:focus,
+.pure-form select:focus,
+.pure-form textarea:focus {
+ outline: 0;
+ border-color: #129FEA;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form input:not([type]):focus {
+ outline: 0;
+ border-color: #129FEA;
+}
+
+.pure-form input[type="file"]:focus,
+.pure-form input[type="radio"]:focus,
+.pure-form input[type="checkbox"]:focus {
+ outline: thin solid #129FEA;
+ outline: 1px auto #129FEA;
+}
+.pure-form .pure-checkbox,
+.pure-form .pure-radio {
+ margin: 0.5em 0;
+ display: block;
+}
+
+.pure-form input[type="text"][disabled],
+.pure-form input[type="password"][disabled],
+.pure-form input[type="email"][disabled],
+.pure-form input[type="url"][disabled],
+.pure-form input[type="date"][disabled],
+.pure-form input[type="month"][disabled],
+.pure-form input[type="time"][disabled],
+.pure-form input[type="datetime"][disabled],
+.pure-form input[type="datetime-local"][disabled],
+.pure-form input[type="week"][disabled],
+.pure-form input[type="number"][disabled],
+.pure-form input[type="search"][disabled],
+.pure-form input[type="tel"][disabled],
+.pure-form input[type="color"][disabled],
+.pure-form select[disabled],
+.pure-form textarea[disabled] {
+ cursor: not-allowed;
+ background-color: #eaeded;
+ color: #cad2d3;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form input:not([type])[disabled] {
+ cursor: not-allowed;
+ background-color: #eaeded;
+ color: #cad2d3;
+}
+.pure-form input[readonly],
+.pure-form select[readonly],
+.pure-form textarea[readonly] {
+ background-color: #eee; /* menu hover bg color */
+ color: #777; /* menu text color */
+ border-color: #ccc;
+}
+
+.pure-form input:focus:invalid,
+.pure-form textarea:focus:invalid,
+.pure-form select:focus:invalid {
+ color: #b94a48;
+ border-color: #e9322d;
+}
+.pure-form input[type="file"]:focus:invalid:focus,
+.pure-form input[type="radio"]:focus:invalid:focus,
+.pure-form input[type="checkbox"]:focus:invalid:focus {
+ outline-color: #e9322d;
+}
+.pure-form select {
+ /* Normalizes the height; padding is not sufficient. */
+ height: 2.25em;
+ border: 1px solid #ccc;
+ background-color: white;
+}
+.pure-form select[multiple] {
+ height: auto;
+}
+.pure-form label {
+ margin: 0.5em 0 0.2em;
+}
+.pure-form fieldset {
+ margin: 0;
+ padding: 0.35em 0 0.75em;
+ border: 0;
+}
+.pure-form legend {
+ display: block;
+ width: 100%;
+ padding: 0.3em 0;
+ margin-bottom: 0.3em;
+ color: #333;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+.pure-form-stacked input[type="text"],
+.pure-form-stacked input[type="password"],
+.pure-form-stacked input[type="email"],
+.pure-form-stacked input[type="url"],
+.pure-form-stacked input[type="date"],
+.pure-form-stacked input[type="month"],
+.pure-form-stacked input[type="time"],
+.pure-form-stacked input[type="datetime"],
+.pure-form-stacked input[type="datetime-local"],
+.pure-form-stacked input[type="week"],
+.pure-form-stacked input[type="number"],
+.pure-form-stacked input[type="search"],
+.pure-form-stacked input[type="tel"],
+.pure-form-stacked input[type="color"],
+.pure-form-stacked input[type="file"],
+.pure-form-stacked select,
+.pure-form-stacked label,
+.pure-form-stacked textarea {
+ display: block;
+ margin: 0.25em 0;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form-stacked input:not([type]) {
+ display: block;
+ margin: 0.25em 0;
+}
+.pure-form-aligned input,
+.pure-form-aligned textarea,
+.pure-form-aligned select,
+/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead…
+.pure-form-aligned .pure-help-inline,
+.pure-form-message-inline {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+}
+.pure-form-aligned textarea {
+ vertical-align: top;
+}
+
+/* Aligned Forms */
+.pure-form-aligned .pure-control-group {
+ margin-bottom: 0.5em;
+}
+.pure-form-aligned .pure-control-group label {
+ text-align: right;
+ display: inline-block;
+ vertical-align: middle;
+ width: 10em;
+ margin: 0 1em 0 0;
+}
+.pure-form-aligned .pure-controls {
+ margin: 1.5em 0 0 11em;
+}
+
+/* Rounded Inputs */
+.pure-form input.pure-input-rounded,
+.pure-form .pure-input-rounded {
+ border-radius: 2em;
+ padding: 0.5em 1em;
+}
+
+/* Grouped Inputs */
+.pure-form .pure-group fieldset {
+ margin-bottom: 10px;
+}
+.pure-form .pure-group input,
+.pure-form .pure-group textarea {
+ display: block;
+ padding: 10px;
+ margin: 0 0 -1px;
+ border-radius: 0;
+ position: relative;
+ top: -1px;
+}
+.pure-form .pure-group input:focus,
+.pure-form .pure-group textarea:focus {
+ z-index: 3;
+}
+.pure-form .pure-group input:first-child,
+.pure-form .pure-group textarea:first-child {
+ top: 1px;
+ border-radius: 4px 4px 0 0;
+ margin: 0;
+}
+.pure-form .pure-group input:first-child:last-child,
+.pure-form .pure-group textarea:first-child:last-child {
+ top: 1px;
+ border-radius: 4px;
+ margin: 0;
+}
+.pure-form .pure-group input:last-child,
+.pure-form .pure-group textarea:last-child {
+ top: -2px;
+ border-radius: 0 0 4px 4px;
+ margin: 0;
+}
+.pure-form .pure-group button {
+ margin: 0.35em 0;
+}
+
+.pure-form .pure-input-1 {
+ width: 100%;
+}
+.pure-form .pure-input-3-4 {
+ width: 75%;
+}
+.pure-form .pure-input-2-3 {
+ width: 66%;
+}
+.pure-form .pure-input-1-2 {
+ width: 50%;
+}
+.pure-form .pure-input-1-3 {
+ width: 33%;
+}
+.pure-form .pure-input-1-4 {
+ width: 25%;
+}
+
+/* Inline help for forms */
+/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead…
+.pure-form .pure-help-inline,
+.pure-form-message-inline {
+ display: inline-block;
+ padding-left: 0.3em;
+ color: #666;
+ vertical-align: middle;
+ font-size: 0.875em;
+}
+
+/* Block help for forms */
+.pure-form-message {
+ display: block;
+ color: #666;
+ font-size: 0.875em;
+}
+
+@media only screen and (max-width : 480px) {
+ .pure-form button[type="submit"] {
+ margin: 0.7em 0 0;
+ }
+
+ .pure-form input:not([type]),
+ .pure-form input[type="text"],
+ .pure-form input[type="password"],
+ .pure-form input[type="email"],
+ .pure-form input[type="url"],
+ .pure-form input[type="date"],
+ .pure-form input[type="month"],
+ .pure-form input[type="time"],
+ .pure-form input[type="datetime"],
+ .pure-form input[type="datetime-local"],
+ .pure-form input[type="week"],
+ .pure-form input[type="number"],
+ .pure-form input[type="search"],
+ .pure-form input[type="tel"],
+ .pure-form input[type="color"],
+ .pure-form label {
+ margin-bottom: 0.3em;
+ display: block;
+ }
+
+ .pure-group input:not([type]),
+ .pure-group input[type="text"],
+ .pure-group input[type="password"],
+ .pure-group input[type="email"],
+ .pure-group input[type="url"],
+ .pure-group input[type="date"],
+ .pure-group input[type="month"],
+ .pure-group input[type="time"],
+ .pure-group input[type="datetime"],
+ .pure-group input[type="datetime-local"],
+ .pure-group input[type="week"],
+ .pure-group input[type="number"],
+ .pure-group input[type="search"],
+ .pure-group input[type="tel"],
+ .pure-group input[type="color"] {
+ margin-bottom: 0;
+ }
+
+ .pure-form-aligned .pure-control-group label {
+ margin-bottom: 0.3em;
+ text-align: left;
+ display: block;
+ width: 100%;
+ }
+
+ .pure-form-aligned .pure-controls {
+ margin: 1.5em 0 0 0;
+ }
+
+ /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline ins…
+ .pure-form .pure-help-inline,
+ .pure-form-message-inline,
+ .pure-form-message {
+ display: block;
+ font-size: 0.75em;
+ /* Increased bottom padding to make it group with its related input el…
+ padding: 0.2em 0 0.8em;
+ }
+}
+
+/*csslint adjoining-classes: false, box-model:false*/
+.pure-menu {
+ box-sizing: border-box;
+}
+
+.pure-menu-fixed {
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 3;
+}
+
+.pure-menu-list,
+.pure-menu-item {
+ position: relative;
+}
+
+.pure-menu-list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.pure-menu-item {
+ padding: 0;
+ margin: 0;
+ height: 100%;
+}
+
+.pure-menu-link,
+.pure-menu-heading {
+ display: block;
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+/* HORIZONTAL MENU */
+.pure-menu-horizontal {
+ width: 100%;
+ white-space: nowrap;
+}
+
+.pure-menu-horizontal .pure-menu-list {
+ display: inline-block;
+}
+
+/* Initial menus should be inline-block so that they are horizontal */
+.pure-menu-horizontal .pure-menu-item,
+.pure-menu-horizontal .pure-menu-heading,
+.pure-menu-horizontal .pure-menu-separator {
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ vertical-align: middle;
+}
+
+/* Submenus should still be display: block; */
+.pure-menu-item .pure-menu-item {
+ display: block;
+}
+
+.pure-menu-children {
+ display: none;
+ position: absolute;
+ left: 100%;
+ top: 0;
+ margin: 0;
+ padding: 0;
+ z-index: 3;
+}
+
+.pure-menu-horizontal .pure-menu-children {
+ left: 0;
+ top: auto;
+ width: inherit;
+}
+
+.pure-menu-allow-hover:hover > .pure-menu-children,
+.pure-menu-active > .pure-menu-children {
+ display: block;
+ position: absolute;
+}
+
+/* Vertical Menus - show the dropdown arrow */
+.pure-menu-has-children > .pure-menu-link:after {
+ padding-left: 0.5em;
+ content: "\25B8";
+ font-size: small;
+}
+
+/* Horizontal Menus - show the dropdown arrow */
+.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {
+ content: "\25BE";
+}
+
+/* scrollable menus */
+.pure-menu-scrollable {
+ overflow-y: scroll;
+ overflow-x: hidden;
+}
+
+.pure-menu-scrollable .pure-menu-list {
+ display: block;
+}
+
+.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {
+ display: inline-block;
+}
+
+.pure-menu-horizontal.pure-menu-scrollable {
+ white-space: nowrap;
+ overflow-y: hidden;
+ overflow-x: auto;
+ -ms-overflow-style: none;
+ -webkit-overflow-scrolling: touch;
+ /* a little extra padding for this style to allow for scrollbars */
+ padding: .5em 0;
+}
+
+.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar {
+ display: none;
+}
+
+/* misc default styling */
+
+.pure-menu-separator,
+.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
+ background-color: #ccc;
+ height: 1px;
+ margin: .3em 0;
+}
+
+.pure-menu-horizontal .pure-menu-separator {
+ width: 1px;
+ height: 1.3em;
+ margin: 0 .3em ;
+}
+
+/* Need to reset the separator since submenu is vertical */
+.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
+ display: block;
+ width: auto;
+}
+
+.pure-menu-heading {
+ text-transform: uppercase;
+ color: #565d64;
+}
+
+.pure-menu-link {
+ color: #777;
+}
+
+.pure-menu-children {
+ background-color: #fff;
+}
+
+.pure-menu-link,
+.pure-menu-disabled,
+.pure-menu-heading {
+ padding: .5em 1em;
+}
+
+.pure-menu-disabled {
+ opacity: .5;
+}
+
+.pure-menu-disabled .pure-menu-link:hover {
+ background-color: transparent;
+}
+
+.pure-menu-active > .pure-menu-link,
+.pure-menu-link:hover,
+.pure-menu-link:focus {
+ background-color: #eee;
+}
+
+.pure-menu-selected .pure-menu-link,
+.pure-menu-selected .pure-menu-link:visited {
+ color: #000;
+}
+
+.pure-table {
+ /* Remove spacing between table cells (from Normalize.css) */
+ border-collapse: collapse;
+ border-spacing: 0;
+ empty-cells: show;
+ border: 1px solid #cbcbcb;
+}
+
+.pure-table caption {
+ color: #000;
+ font: italic 85%/1 arial, sans-serif;
+ padding: 1em 0;
+ text-align: center;
+}
+
+.pure-table td,
+.pure-table th {
+ border-left: 1px solid #cbcbcb;/* inner column border */
+ border-width: 0 0 0 1px;
+ font-size: inherit;
+ margin: 0;
+ overflow: visible; /*to make ths where the title is really long work*/
+ padding: 0.5em 1em; /* cell padding */
+}
+
+/* Consider removing this next declaration block, as it causes problems when
+there's a rowspan on the first cell. Case added to the tests. issue#432 */
+.pure-table td:first-child,
+.pure-table th:first-child {
+ border-left-width: 0;
+}
+
+.pure-table thead {
+ background-color: #e0e0e0;
+ color: #000;
+ text-align: left;
+ vertical-align: bottom;
+}
+
+/*
+striping:
+ even - #fff (white)
+ odd - #f2f2f2 (light gray)
+*/
+.pure-table td {
+ background-color: transparent;
+}
+.pure-table-odd td {
+ background-color: #f2f2f2;
+}
+
+/* nth-child selector for modern browsers */
+.pure-table-striped tr:nth-child(2n-1) td {
+ background-color: #f2f2f2;
+}
+
+/* BORDERED TABLES */
+.pure-table-bordered td {
+ border-bottom: 1px solid #cbcbcb;
+}
+.pure-table-bordered tbody > tr:last-child > td {
+ border-bottom-width: 0;
+}
+
+
+/* HORIZONTAL BORDERED TABLES */
+
+.pure-table-horizontal td,
+.pure-table-horizontal th {
+ border-width: 0 0 1px 0;
+ border-bottom: 1px solid #cbcbcb;
+}
+.pure-table-horizontal tbody > tr:last-child > td {
+ border-bottom-width: 0;
+}
diff --git a/static/css/style.css b/static/css/style.css
@@ -0,0 +1,17 @@
+/* =================================================================== */
+ /* style.css for cl-yag */
+/* =================================================================== */
+@charset "utf-8";
+
+
+/* ~ PURE ~ */
+@import url("pure_r1.0.0/pure.css");
+
+
+/* ~ CLYM ~ */
+@import url("clym.css");
+
+
+/* ~ LAST ENTRY ~ */
+/* ~ use custom.css for overriding rules ~ */
+@import url("custom.css");
diff --git a/templates/layout.tpl b/templates/layout.tpl
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink…
<meta name="generator" content="cl-yag" />
<title>%%Title%%</title>
- <link rel="stylesheet" type="text/css" href="static/css/style.css" />
+ <link rel="stylesheet" type="text/css" href="static/css/style.css" media="…
<link rel="alternate" type="application/rss+xml" title="%%Title%% RSS Feed…
<!-- <link rel="alternate" type="application/atom+xml" title="%%Title%% Ato…
<link rel="icon" type="image/x-icon" href="static/img/clyagFav.ico" />
@@ -14,12 +14,12 @@
<body>
<div id="wrapper">
<header>
- <nav>
- <!-- <a href="#">BRAND</a> -->
- <ul>
- <li><a href="index.html">Home</a></li>
- <li><a href="index-titles.html">List of Articles</a></li>
- <li><a href="rss.xml">RSS</a></li>
+ <nav class="pure-menu pure-menu-horizontal">
+ <!--<a href="#"></a>-->
+ <ul class="pure-menu-list">
+ <li class="pure-menu-item"><a href="index.html" class="pure-menu…
+ <li class="pure-menu-item"><a href="index-titles.html" class="pu…
+ <li class="pure-menu-item"><a href="rss.xml" class="pure-menu-li…
</ul>
</nav>
<div>All Tags: %%Tags%%</div>
diff --git a/templates/layout.tpl_original b/templates/layout.tpl_original
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink…
+ <meta name="generator" content="cl-yag" />
+ <title>%%Title%%</title>
+ <link rel="stylesheet" type="text/css" href="static/css/style.css" media="…
+ <link rel="alternate" type="application/rss+xml" title="%%Title%% RSS Feed…
+<!-- <link rel="alternate" type="application/atom+xml" title="%%Title%% Ato…
+ <link rel="icon" type="image/x-icon" href="static/img/clyagFav.ico" />
+ </head>
+
+ <body>
+ <div id="wrapper">
+ <header>
+ <nav>
+ <!--<a href="#"></a>-->
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li><a href="index-titles.html">All Posts</a></li>
+ <li><a href="rss.xml">RSS</a></li>
+ </ul>
+ </nav>
+ <div>All Tags: %%Tags%%</div>
+ </header>
+
+ <main>%%Body%%</main>
+
+ <footer><p>This blog is powered by cl-yag!<p></footer>
+
+ </div><!-- #wrapper -->
+ </body>
+</html>
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.