Create gh-pages branch via GitHub

This commit is contained in:
Matej Kramny
2016-05-19 19:27:52 +01:00
parent b30c46546d
commit 184625088b
12 changed files with 1221 additions and 334 deletions

BIN
images/body-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
images/download-button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
images/github-button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
images/header-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
images/highlight-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/sidebar-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,118 +1,97 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en-us"> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset='utf-8'>
<title>Cachet-monitor by CastawayLabs</title> <meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="stylesheets/normalize.css" media="screen"> <link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen"> <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/github-light.css" media="screen"> <link rel="stylesheet" type="text/css" href="stylesheets/github-light.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>Cachet-monitor by CastawayLabs</title>
</head> </head>
<body> <body>
<section class="page-header"> <header>
<h1 class="project-name">Cachet-monitor</h1> <div class="inner">
<h2 class="project-tagline">Monitors a URL and posts data points to cachet</h2> <h1>Cachet-monitor</h1>
<a href="https://github.com/CastawayLabs/cachet-monitor" class="btn">View on GitHub</a> <h2>Distributed monitoring plugin for CachetHQ</h2>
<a href="https://github.com/CastawayLabs/cachet-monitor/zipball/master" class="btn">Download .zip</a> <a href="https://github.com/CastawayLabs/cachet-monitor" class="button"><small>View project on</small> GitHub</a>
<a href="https://github.com/CastawayLabs/cachet-monitor/tarball/master" class="btn">Download .tar.gz</a> </div>
</section> </header>
<section class="main-content"> <div id="content-wrapper">
<h1> <div class="inner clearfix">
<a id="cachet-monitor-plugin" class="anchor" href="#cachet-monitor-plugin" aria-hidden="true"><span class="octicon octicon-link"></span></a>Cachet Monitor plugin</h1> <section id="main-content">
<p><img src="https://castawaylabs.github.io/cachet-monitor/screenshot.png" alt="screenshot"></p>
<p>This is a monitoring plugin for CachetHQ.</p>
<p><img src="https://castawaylabs.github.io/cachet-monitor/screenshot.png" alt=""></p>
<h2> <h2>
<a id="features" class="anchor" href="#features" aria-hidden="true"><span class="octicon octicon-link"></span></a>Features</h2> <a id="features" class="anchor" href="#features" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Features</h2>
<ul> <ul>
<li>[x] Creates &amp; Resolves Incidents</li> <li>[x] Creates &amp; Resolves Incidents</li>
<li>[x] Posts monitor lag every second</li> <li>[x] Posts monitor lag to cachet graphs</li>
<li>[x] Updates Component to Partial Outage</li> <li>[x] Updates Component to Partial Outage</li>
<li>[x] Updates Component to Major Outage if in Partial Outage</li> <li>[x] Updates Component to Major Outage if already in Partial Outage (works well with distributed monitoring)</li>
<li>[x] Can be run on multiple servers and geo regions</li> <li>[x] Can be run on multiple servers and geo regions</li>
</ul> </ul>
<h2> <h2>
<a id="docker-quickstart" class="anchor" href="#docker-quickstart" aria-hidden="true"><span class="octicon octicon-link"></span></a>Docker Quickstart</h2> <a id="configuration" class="anchor" href="#configuration" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Configuration</h2>
<ol>
<li>Create a configuration json</li>
<li>
</ol>
<pre><code>docker run -d \
--name cachet-monitor \
-h cachet-monitor \
-v `pwd`/config.json:/etc/cachet-monitor.config.json \
castawaylabs/cachet-monitor
</code></pre>
<h2>
<a id="configuration" class="anchor" href="#configuration" aria-hidden="true"><span class="octicon octicon-link"></span></a>Configuration</h2>
<pre><code>{ <pre><code>{
"api_url": "https://demo.cachethq.io/api", // URL for the API. Note: Must end with /api/v1
"api_token": "9yMHsdioQosnyVK4iCVR", "api_url": "https://&lt;cachet domain&gt;/api/v1",
"monitors": [ // Your API token for Cachet
{ "api_token": "&lt;cachet api token&gt;",
"name": "nodegear frontend", // optional, false default, set if your certificate is self-signed/untrusted
"url": "https://nodegear.io/ping", "insecure_api": false,
"metric_id": 0, "monitors": [{
"component_id": 0, // required, friendly name for your monitor
"threshold": 80, "name": "Name of your monitor",
"component_id": null, // required, url to probe
"expected_status_code": 200, "url": "Ping URL",
"strict_tls": true // optional, http method (defaults GET)
} "method": "get",
], // self-signed ssl certificate
"insecure_api": false "strict_tls": true,
// seconds between checks
"interval": 10,
// post lag to cachet metric (graph)
// note either metric ID or component ID are required
"metric_id": &lt;metric id&gt;,
// post incidents to this component
"component_id": &lt;component id&gt;,
// If % of downtime is over this threshold, open an incident
"threshold": 80,
// optional, expected status code (either status code or body must be supplied)
"expected_status_code": 200,
// optional, regular expression to match body content
"expected_body": "P.*NG"
}],
// optional, system name to identify bot (uses hostname by default)
"system_name": "",
// optional, defaults to stdout
"log_path": ""
} }
</code></pre> </code></pre>
<p><em>Notes:</em></p>
<ul>
<li>
<code>metric_id</code> is optional</li>
<li>
<code>insecure_api</code> if true it will ignore HTTPS certificate errors (eg if self-signed)</li>
<li>
<code>strict_tls</code> if false (true is default) it will ignore HTTPS certificate errors (eg if monitor uses self-signed certificate)</li>
<li>
<code>component_id</code> is optional</li>
<li>
<code>threshold</code> is a percentage</li>
<li>
<code>expected_status_code</code> is a http response code</li>
<li>GET request will be performed on the <code>url</code>
</li>
</ul>
<h2> <h2>
<a id="how-to-run" class="anchor" href="#how-to-run" aria-hidden="true"><span class="octicon octicon-link"></span></a>How to run</h2> <a id="installation" class="anchor" href="#installation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Installation</h2>
<p>Example:</p>
<ol> <ol>
<li>Set up <a href="https://golang.org">Go</a> <li>Download binary from <a href="https://github.com/CastawayLabs/cachet-monitor/releases">release page</a>
</li> </li>
<li><code>go install github.com/castawaylabs/cachet-monitor</code></li> <li>Create your configuration (<a href="https://raw.githubusercontent.com/CastawayLabs/cachet-monitor/master/example.config.json">example</a>)</li>
<li><code>cachet-monitor -c https://raw.githubusercontent.com/CastawayLabs/cachet-monitor/master/example.config.json</code></li> <li><code>cachet-monitor -c /etc/cachet-monitor.config.json</code></li>
</ol> </ol>
<p>Production:</p> <p>pro tip: run in background using <code>nohup cachet-monitor 2&gt;&amp;1 &gt; /var/log/cachet-monitor.log &amp;</code></p>
<ol>
<li>Download the example config and save to <code>/etc/cachet-monitor.config.json</code>
</li>
<li>Run in background: <code>nohup cachet-monitor 2&gt;&amp;1 &gt; /var/log/cachet-monitor.log &amp;</code>
</li>
</ol>
<pre><code>Usage of cachet-monitor: <pre><code>Usage of cachet-monitor:
-c="/etc/cachet-monitor.config.json": Config path -c="/etc/cachet-monitor.config.json": Config path
@@ -121,7 +100,7 @@
</code></pre> </code></pre>
<h2> <h2>
<a id="environment-variables" class="anchor" href="#environment-variables" aria-hidden="true"><span class="octicon octicon-link"></span></a>Environment variables</h2> <a id="environment-variables" class="anchor" href="#environment-variables" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Environment variables</h2>
<table> <table>
<thead> <thead>
@@ -134,26 +113,55 @@
<tbody> <tbody>
<tr> <tr>
<td>CACHET_API</td> <td>CACHET_API</td>
<td><a href="http://demo.cachethq.io/api">http://demo.cachethq.io/api</a></td> <td><a href="http://demo.cachethq.io/api/v1">http://demo.cachethq.io/api/v1</a></td>
<td>URL endpoint for cachet api</td> <td>URL endpoint for cachet api</td>
</tr> </tr>
<tr> <tr>
<td>CACHET_TOKEN</td> <td>CACHET_TOKEN</td>
<td>randomvalue</td> <td>APIToken123</td>
<td>API Authentication token</td> <td>API Authentication token</td>
</tr> </tr>
<tr>
<td>CACHET_DEV</td>
<td>1</td>
<td>Strips logging</td>
</tr>
</tbody> </tbody>
</table> </table>
<footer class="site-footer"> <h2>
<span class="site-footer-owner"><a href="https://github.com/CastawayLabs/cachet-monitor">Cachet-monitor</a> is maintained by <a href="https://github.com/CastawayLabs">CastawayLabs</a>.</span> <a id="vision-and-goals" class="anchor" href="#vision-and-goals" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Vision and goals</h2>
<span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a> by <a href="https://twitter.com/jasonlong">Jason Long</a>.</span> <p>We made this tool because we felt the need to have our own monitoring software (leveraging on Cachet).
</footer> The idea is a stateless program which collects data and pushes it to a central cachet instance.</p>
</section> <p>This gives us power to have an army of geographically distributed loggers and reveal issues in both latency &amp; downtime on client websites.</p>
<h2>
<a id="package-usage" class="anchor" href="#package-usage" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Package usage</h2>
<p>When using <code>cachet-monitor</code> as a package in another program, you should follow what <code>cli/main.go</code> does. It is important to call <code>ValidateConfiguration</code> on <code>CachetMonitor</code> and all the monitors inside.</p>
<p><a href="https://godoc.org/github.com/CastawayLabs/cachet-monitor">API Documentation</a></p>
</section>
<aside id="sidebar">
<a href="https://github.com/CastawayLabs/cachet-monitor/zipball/master" class="button">
<small>Download</small>
.zip file
</a>
<a href="https://github.com/CastawayLabs/cachet-monitor/tarball/master" class="button">
<small>Download</small>
.tar.gz file
</a>
<p class="repo-owner"><a href="https://github.com/CastawayLabs/cachet-monitor"></a> is maintained by <a href="https://github.com/CastawayLabs">CastawayLabs</a>.</p>
<p>This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the Architect theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.</p>
</aside>
</div>
</div>
</body> </body>
</html> </html>

1
javascripts/main.js Normal file
View File

@@ -0,0 +1 @@
console.log('This would be the main JS file.');

View File

@@ -1 +1,7 @@
{"name":"Cachet-monitor","tagline":"Monitors a URL and posts data points to cachet","body":"Cachet Monitor plugin\r\n=====================\r\n\r\nThis is a monitoring plugin for CachetHQ.\r\n\r\n![](https://castawaylabs.github.io/cachet-monitor/screenshot.png)\r\n\r\nFeatures\r\n--------\r\n\r\n- [x] Creates & Resolves Incidents\r\n- [x] Posts monitor lag every second\r\n- [x] Updates Component to Partial Outage\r\n- [x] Updates Component to Major Outage if in Partial Outage\r\n- [x] Can be run on multiple servers and geo regions\r\n\r\nDocker Quickstart\r\n-----------------\r\n\r\n1. Create a configuration json\r\n2. \r\n```\r\ndocker run -d \\\r\n --name cachet-monitor \\\r\n -h cachet-monitor \\\r\n -v `pwd`/config.json:/etc/cachet-monitor.config.json \\\r\n castawaylabs/cachet-monitor\r\n```\r\n\r\nConfiguration\r\n-------------\r\n\r\n```\r\n{\r\n \"api_url\": \"https://demo.cachethq.io/api\",\r\n \"api_token\": \"9yMHsdioQosnyVK4iCVR\",\r\n \"monitors\": [\r\n {\r\n \"name\": \"nodegear frontend\",\r\n \"url\": \"https://nodegear.io/ping\",\r\n \"metric_id\": 0,\r\n \"component_id\": 0,\r\n \"threshold\": 80,\r\n \"component_id\": null,\r\n \"expected_status_code\": 200,\r\n \"strict_tls\": true\r\n }\r\n ],\r\n \"insecure_api\": false\r\n}\r\n```\r\n\r\n*Notes:*\r\n\r\n- `metric_id` is optional\r\n- `insecure_api` if true it will ignore HTTPS certificate errors (eg if self-signed)\r\n- `strict_tls` if false (true is default) it will ignore HTTPS certificate errors (eg if monitor uses self-signed certificate)\r\n- `component_id` is optional\r\n- `threshold` is a percentage\r\n- `expected_status_code` is a http response code\r\n- GET request will be performed on the `url`\r\n\r\nHow to run\r\n----------\r\n\r\nExample:\r\n\r\n1. Set up [Go](https://golang.org)\r\n2. `go install github.com/castawaylabs/cachet-monitor`\r\n3. `cachet-monitor -c https://raw.githubusercontent.com/CastawayLabs/cachet-monitor/master/example.config.json`\r\n\r\nProduction:\r\n\r\n1. Download the example config and save to `/etc/cachet-monitor.config.json`\r\n2. Run in background: `nohup cachet-monitor 2>&1 > /var/log/cachet-monitor.log &`\r\n\r\n```\r\nUsage of cachet-monitor:\r\n -c=\"/etc/cachet-monitor.config.json\": Config path\r\n -log=\"\": Log path\r\n -name=\"\": System Name\r\n```\r\n\r\nEnvironment variables\r\n---------------------\r\n\r\n| Name | Example Value | Description |\r\n| ------------ | --------------------------- | --------------------------- |\r\n| CACHET_API | http://demo.cachethq.io/api | URL endpoint for cachet api |\r\n| CACHET_TOKEN | randomvalue | API Authentication token |","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} {
"name": "Cachet-monitor",
"tagline": "Distributed monitoring plugin for CachetHQ",
"body": "![screenshot](https://castawaylabs.github.io/cachet-monitor/screenshot.png)\r\n\r\nFeatures\r\n--------\r\n\r\n- [x] Creates & Resolves Incidents\r\n- [x] Posts monitor lag to cachet graphs\r\n- [x] Updates Component to Partial Outage\r\n- [x] Updates Component to Major Outage if already in Partial Outage (works well with distributed monitoring)\r\n- [x] Can be run on multiple servers and geo regions\r\n\r\nConfiguration\r\n-------------\r\n\r\n```\r\n{\r\n // URL for the API. Note: Must end with /api/v1\r\n \"api_url\": \"https://<cachet domain>/api/v1\",\r\n // Your API token for Cachet\r\n \"api_token\": \"<cachet api token>\",\r\n // optional, false default, set if your certificate is self-signed/untrusted\r\n \"insecure_api\": false,\r\n \"monitors\": [{\r\n // required, friendly name for your monitor\r\n \"name\": \"Name of your monitor\",\r\n // required, url to probe\r\n \"url\": \"Ping URL\",\r\n // optional, http method (defaults GET)\r\n \"method\": \"get\",\r\n // self-signed ssl certificate\r\n \"strict_tls\": true,\r\n // seconds between checks\r\n \"interval\": 10,\r\n // post lag to cachet metric (graph)\r\n // note either metric ID or component ID are required\r\n \"metric_id\": <metric id>,\r\n // post incidents to this component\r\n \"component_id\": <component id>,\r\n // If % of downtime is over this threshold, open an incident\r\n \"threshold\": 80,\r\n // optional, expected status code (either status code or body must be supplied)\r\n \"expected_status_code\": 200,\r\n // optional, regular expression to match body content\r\n \"expected_body\": \"P.*NG\"\r\n }],\r\n // optional, system name to identify bot (uses hostname by default)\r\n \"system_name\": \"\",\r\n // optional, defaults to stdout\r\n \"log_path\": \"\"\r\n}\r\n```\r\n\r\nInstallation\r\n------------\r\n\r\n1. Download binary from [release page](https://github.com/CastawayLabs/cachet-monitor/releases)\r\n2. Create your configuration ([example](https://raw.githubusercontent.com/CastawayLabs/cachet-monitor/master/example.config.json))\r\n3. `cachet-monitor -c /etc/cachet-monitor.config.json`\r\n\r\npro tip: run in background using `nohup cachet-monitor 2>&1 > /var/log/cachet-monitor.log &`\r\n\r\n```\r\nUsage of cachet-monitor:\r\n -c=\"/etc/cachet-monitor.config.json\": Config path\r\n -log=\"\": Log path\r\n -name=\"\": System Name\r\n```\r\n\r\nEnvironment variables\r\n---------------------\r\n\r\n| Name | Example Value | Description |\r\n| ------------ | ------------------------------ | --------------------------- |\r\n| CACHET_API | http://demo.cachethq.io/api/v1 | URL endpoint for cachet api |\r\n| CACHET_TOKEN | APIToken123 | API Authentication token |\r\n| CACHET_DEV | 1 | Strips logging |\r\n\r\nVision and goals\r\n----------------\r\n\r\nWe made this tool because we felt the need to have our own monitoring software (leveraging on Cachet).\r\nThe idea is a stateless program which collects data and pushes it to a central cachet instance.\r\n\r\nThis gives us power to have an army of geographically distributed loggers and reveal issues in both latency & downtime on client websites.\r\n\r\nPackage usage\r\n-------------\r\n\r\nWhen using `cachet-monitor` as a package in another program, you should follow what `cli/main.go` does. It is important to call `ValidateConfiguration` on `CachetMonitor` and all the monitors inside.\r\n\r\n[API Documentation](https://godoc.org/github.com/CastawayLabs/cachet-monitor)\r\n",
"google": "",
"note": "Don't delete this file! It's used internally to help with page regeneration."
}

View File

@@ -1,17 +1,25 @@
/* /*
Copyright 2014 GitHub Inc. The MIT License (MIT)
Licensed under the Apache License, Version 2.0 (the "License"); Copyright (c) 2015 GitHub, Inc.
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 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 of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Unless required by applicable law or agreed to in writing, software The above copyright notice and this permission notice shall be included in all
distributed under the License is distributed on an "AS IS" BASIS, copies or substantial portions of the Software.
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
limitations under the License. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS 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.
*/ */

228
stylesheets/print.css Normal file
View File

@@ -0,0 +1,228 @@
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
padding: 0;
margin: 0;
font: inherit;
font-size: 100%;
vertical-align: baseline;
border: 0;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
body {
font-family: 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 13px;
line-height: 1.5;
color: #000;
}
a {
font-weight: bold;
color: #d5000d;
}
header {
padding-top: 35px;
padding-bottom: 10px;
}
header h1 {
font-size: 48px;
font-weight: bold;
line-height: 1.2;
color: #303030;
letter-spacing: -1px;
}
header h2 {
font-size: 24px;
font-weight: normal;
line-height: 1.3;
color: #aaa;
letter-spacing: -1px;
}
#downloads {
display: none;
}
#main_content {
padding-top: 20px;
}
code, pre {
margin-bottom: 30px;
font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal;
font-size: 12px;
color: #222;
}
code {
padding: 0 3px;
}
pre {
padding: 20px;
overflow: auto;
border: solid 1px #ddd;
}
pre code {
padding: 0;
}
ul, ol, dl {
margin-bottom: 20px;
}
/* COMMON STYLES */
table {
width: 100%;
border: 1px solid #ebebeb;
}
th {
font-weight: 500;
}
td {
font-weight: 300;
text-align: center;
border: 1px solid #ebebeb;
}
form {
padding: 20px;
background: #f2f2f2;
}
/* GENERAL ELEMENT TYPE STYLES */
h1 {
font-size: 2.8em;
}
h2 {
margin-bottom: 8px;
font-size: 22px;
font-weight: bold;
color: #303030;
}
h3 {
margin-bottom: 8px;
font-size: 18px;
font-weight: bold;
color: #d5000d;
}
h4 {
font-size: 16px;
font-weight: bold;
color: #303030;
}
h5 {
font-size: 1em;
color: #303030;
}
h6 {
font-size: .8em;
color: #303030;
}
p {
margin-bottom: 20px;
font-weight: 300;
}
a {
text-decoration: none;
}
p a {
font-weight: 400;
}
blockquote {
padding: 0 0 0 30px;
margin-bottom: 20px;
font-size: 1.6em;
border-left: 10px solid #e9e9e9;
}
ul li {
padding-left: 20px;
list-style-position: inside;
list-style: disc;
}
ol li {
padding-left: 3px;
list-style-position: inside;
list-style: decimal;
}
dl dd {
font-style: italic;
font-weight: 100;
}
footer {
padding-top: 20px;
padding-bottom: 30px;
margin-top: 40px;
font-size: 13px;
color: #aaa;
}
footer a {
color: #666;
}
/* MISC */
.clearfix:after {
display: block;
height: 0;
clear: both;
visibility: hidden;
content: '.';
}
.clearfix {display: inline-block;}
* html .clearfix {height: 1%;}
.clearfix {display: block;}

File diff suppressed because it is too large Load Diff