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> |