pub / goaccess_dashboard

Tiny tool for privacy-preserving web-analytics
git clone https://https://src.jayvii.de/pub/goaccess_dashboard.git
Home | Log | Files | Exports | Refs | Submodules | README | RSS

commit 6a6540597f3d289a13fdc0d839347447d6ce183f
Author: JayVii <jayvii[AT]posteo[DOT]de>
Date:   Sat, 27 Apr 2024 22:19:23 +0200

Initial Code dump

Diffstat:
AREADME | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acreate_logs_report.sh | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aindex.html | 2529+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 2654 insertions(+), 0 deletions(-)

diff --git a/README b/README @@ -0,0 +1,54 @@ +goaccess_dashboard +================== + +Please send patches or remarks to <jayvii[AT]posteo[DOT]de> + +A tiny tool based on goaccess (https://goaccess.io/) which creates a summary of +aggregated privacy preserving website traffic analytics. + +This tool tracks traffic, not people. It is unnecessary to insert tracking +code in websites. No micro-level information need to be stored whatsoever. This +tool works with purely technically necessary and minimal information that users +send to the webserver. + +The goal is to create an easy to use dashboard and web-frontend for different +weblog analytics created with goaccess. + +This tool creates analytics for all time, by year, by month, by week (and +optionally daily). + +Setup +===== + +- Go and get https://goaccess.io +- Adjust the log-output of your webserver according to the goaccess manuals. By + default, the script assumes the logs to be stored under + /var/log/apache/www.example.com_access.log +- Insert the index.html in a designated webroot. This is where your + traffic-dahsboard lives (e.g. traffic.www.example.com) +- Setup a cron-job to run create_logs-report.sh periodically + +Apache2 Configuration +--------------------- + +Snippet for the log-definition in your apache configuration: + + ErrorLog ${APACHE_LOG_DIR}/www.example.com_error.log + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" custom + CustomLog ${APACHE_LOG_DIR}/www.example.com_access.log custom + +Cronjob + + # |----------- minutes + # | + # | |--------- hours + # | | + # | | |------- day of month + # | | | + # | | | |----- month + # | | | | + # | | | | |--- day of week + # | | | | | + # | | | | | |- command + # | | | | | | + 0 * * * * ~/goaccess/create_logs_report.sh "www.example.com" diff --git a/create_logs_report.sh b/create_logs_report.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +export LC_TIME=en + +DB_PATH="$HOME/goaccess/${1}" +HTML_PATH="/var/www/traffic.${1}" +LOG_PATH="/var/log/apache2/${1}_access.log" + +# set dates +TODAY=$(date +%Y-%m-%d) +THIS_DAY=$(date +%d --date "${TODAY}") +THIS_WEEK=$(date +%V --date "${TODAY}") +THIS_MONTH=$(date +%m --date "${TODAY}") +THIS_YEAR=$(date +%Y --date "${TODAY}") +TODAY=$(date +%d\\/%b\\/%Y --date "${TODAY}") + +# create db-paths +mkdir -p "${DB_PATH}/all" +mkdir -p "${DB_PATH}/${THIS_YEAR}" +mkdir -p "${DB_PATH}/${THIS_YEAR}/${THIS_MONTH}" +# mkdir -p "${DB_PATH}/${THIS_YEAR}/${THIS_MONTH}/${THIS_DAY}" +mkdir -p "${DB_PATH}/${THIS_YEAR}/week-${THIS_WEEK}" + +# create output paths +mkdir -p "${HTML_PATH}/all" +mkdir -p "${HTML_PATH}/${THIS_YEAR}" +mkdir -p "${HTML_PATH}/${THIS_YEAR}/${THIS_MONTH}" +# mkir -p "${HTML_PATH}/${THIS_YEAR}/${THIS_MONTH}/${THIS_DAY}" +mkdir -p "${HTML_PATH}/${THIS_YEAR}/week-${THIS_WEEK}" + +# create daily log +# echo "Create this Day's log" +# sed -n '/'${TODAY}'/,$ p' ${LOG_PATH} | goaccess \ +# --db-path="${DB_PATH}/${THIS_YEAR}/${THIS_MONTH}/${THIS_DAY}" \ +# --output-format="${HTML_PATH}/${THIS_YEAR}/${THIS_MONTH}/${THIS_DAY}/index.html" \ +# --load-from-disk --keep-db-files \ +# - + +# create weekly log +echo "Create this Week's log" +sed -n '/'${TODAY}'/,$ p' ${LOG_PATH} | goaccess \ + --db-path="${DB_PATH}/${THIS_YEAR}/week-${THIS_WEEK}" \ + --output-format="${HTML_PATH}/${THIS_YEAR}/week-${THIS_WEEK}/index.html" \ + --load-from-disk --keep-db-files \ + - + +# create monthly log +echo "Create this Month's log" +sed -n '/'${TODAY}'/,$ p' ${LOG_PATH} | goaccess \ + --db-path="${DB_PATH}/${THIS_YEAR}/${THIS_MONTH}" \ + --output-format="${HTML_PATH}/${THIS_YEAR}/${THIS_MONTH}/index.html" \ + --load-from-disk --keep-db-files \ + - + +# create yearly log +echo "Create this Year's log" +sed -n '/'${TODAY}'/,$ p' ${LOG_PATH} | goaccess \ + --db-path="${DB_PATH}/${THIS_YEAR}" \ + --output-format="${HTML_PATH}/${THIS_YEAR}/index.html" \ + --load-from-disk --keep-db-files \ + - + +# create global log +echo "Create global log" +sed -n '/'${TODAY}'/,$ p' ${LOG_PATH} | goaccess \ + --db-path="${DB_PATH}/all" \ + --output-format="${HTML_PATH}/all/index.html" \ + --load-from-disk --keep-db-files \ + - + +echo "Done!" diff --git a/index.html b/index.html @@ -0,0 +1,2529 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Traffic</title> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> + <!--<link rel="stylesheet" href="assets/css/main.css" />--> +</head> + +<body class="is-preload"> + +<?php +if (file_exists("./env.php")) { + include "./env.php"; +} else { + $start_year = date("Y"); + $start_month = 01; + start_day = 01; + $start_week = 01; +} +?> + +<nav id="nav"> + <ul class="container"> + <li><a href="all/">All Time</a></li> + <?php + echo "<li><a href='" . date("Y") . "/'>" . date("Y") . "</a></li>"; + echo "<li><a href='" . date("Y") . "/" . date("m") . "/'>" . date("m-Y") . "</a></li>"; + echo "<li><a href='" . date("Y") . "/week-" . date("W") . "/'>W" . date("W-Y") . "</a></li>"; + //echo "<li><a href='" . date("Y") . "/" . date("m") . "/" . date("d") . "/'>" . date("d-m-Y") . "</a></li>"; + ?> + </ul> +</nav> + + <!-- List --> + <article id="top" class="wrapper"> + <div class="container"> + <h1>Traffic</h1> + <p>Here is a summary of <strong>aggregated</strong> privacy preserving website traffic analytics. This tool <strong>tracks traffic, not people</strong>. There is no tracking code in the websites that are shown here. No micro-level information are stored whatsoever. This tool works with purely technically necessary and minimal information that users send to the webserver.</p> + <h2>Yearly</h2> + <br> + <div class="row" style="margin-left:auto;margin-right:auto;"> + <?php + for ($year = $start_year; $year <= date("Y"); $year++) { + echo "<a class='button' href='" . $year . "/'>" . $year . "</a>"; + } + ?> + </div> + <br> + <h2>Monthly</h2> + <br> + <div class="row" style="margin-left:auto;margin-right:auto;"> + <?php + for ($year = $start_year; $year <= date("Y"); $year++) { + for ($month = 1; $month <= 12; $month++) { + if ($year == $start_year && ($month < $start_month || $month > date("m"))) { + // Skipping... + } else { + echo "<a class='button' href='" . $year . "/" . substr("0{$month}", -2) . "/'>" . date("F", strtotime($year . "-" . substr("{$month}", -2) . "-01")) . " " . $year . "</a>"; + } + } + } + ?> + </div> + <br> + <h2>Weekly</h2> + <br> + <div class="row" style="margin-left:auto;margin-right:auto;"> + <?php + for ($year = $start_year; $year <= date("Y"); $year++) { + for ($week = 1; $week <= 53; $week++) { + if ($year == $start_year && ($week > $start_week || $week > date("W"))) { + // Skipping... + } else { + echo "<a class='button' href='" . $year . "/week-" . substr("0{$week}", -2) . "/'>" . date("F", strtotime($year . "-W" . substr("{$week}", -2))) . " " . $year . "</a>"; + } + } + } + ?> + </div> + </div> + </article> + +</body> +<style> +/* + Miniport by HTML5 UP + html5up.net | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +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 { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +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-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + padding-top: 3.5em; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, textarea, select { + font-family: 'Open Sans', sans-serif; + line-height: 1.85em; + color: #888; + font-weight: 300; + font-size: 13pt; + } + + a { + -moz-transition: color .2s ease-in-out; + -webkit-transition: color .2s ease-in-out; + -ms-transition: color .2s ease-in-out; + transition: color .2s ease-in-out; + color: #43B3E0; + text-decoration: underline; + } + + a:hover { + color: #43bff0 !important; + } + + a img { + border: 0; + } + + b, strong { + font-weight: 600; + color: #3e3e3e; + } + + i, em { + font-style: italic; + } + + sub { + position: relative; + top: 0.5em; + font-size: 0.8em; + } + + sup { + position: relative; + top: -0.5em; + font-size: 0.8em; + } + + blockquote { + border-left: solid 0.75em #eee; + padding: 1em 0 1em 1.5em; + font-style: italic; + } + + h1, h2, h3, h4, h5, h6 { + color: #3e3e3e; + margin: 0 0 0.75em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + text-decoration: none; + color: inherit; + } + + h2, h3, h4, h5, h6 { + font-weight: 700; + } + + h1 { + font-size: 3.25em; + letter-spacing: -0.025em; + font-weight: 300; + } + + h1 strong { + font-weight: 700; + } + + h2 { + font-size: 2em; + letter-spacing: -0.015em; + } + + h3 { + font-size: 1.5em; + letter-spacing: -0.015em; + } + + em, i { + font-style: italic; + } + + br.clear { + clear: both; + } + + hr { + border: 0; + border-top: solid 1px #444; + border-top-color: rgba(0, 0, 0, 0.35); + box-shadow: 0px 1px 0px 0px rgba(255, 255, 255, 0.1); + height: 1px; + margin: 3em 0; + } + + p, ul, ol, dl, table { + margin-bottom: 2em; + } + + header { + margin: 0 0 3em 0; + } + + header > p { + font-size: 1.25em; + margin: 0; + } + + footer { + margin: 3em 0 0 0; + } + + footer > p { + font-size: 1.25em; + } + +/* Container */ + + .container { + margin: 0 auto; + max-width: calc(100% - 50px); + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1200px; + } + + .container.medium { + width: 900px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 100%; + } + + .container.medium { + width: 75%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + max-width: calc(100% - 30px); + } + + .container.medium { + width: 100%; + } + + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 25px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-xlarge { + order: -1; + } + + .row > .col-1-xlarge { + width: 8.33333%; + } + + .row > .off-1-xlarge { + margin-left: 8.33333%; + } + + .row > .col-2-xlarge { + width: 16.66667%; + } + + .row > .off-2-xlarge { + margin-left: 16.66667%; + } + + .row > .col-3-xlarge { + width: 25%; + } + + .row > .off-3-xlarge { + margin-left: 25%; + } + + .row > .col-4-xlarge { + width: 33.33333%; + } + + .row > .off-4-xlarge { + margin-left: 33.33333%; + } + + .row > .col-5-xlarge { + width: 41.66667%; + } + + .row > .off-5-xlarge { + margin-left: 41.66667%; + } + + .row > .col-6-xlarge { + width: 50%; + } + + .row > .off-6-xlarge { + margin-left: 50%; + } + + .row > .col-7-xlarge { + width: 58.33333%; + } + + .row > .off-7-xlarge { + margin-left: 58.33333%; + } + + .row > .col-8-xlarge { + width: 66.66667%; + } + + .row > .off-8-xlarge { + margin-left: 66.66667%; + } + + .row > .col-9-xlarge { + width: 75%; + } + + .row > .off-9-xlarge { + margin-left: 75%; + } + + .row > .col-10-xlarge { + width: 83.33333%; + } + + .row > .off-10-xlarge { + margin-left: 83.33333%; + } + + .row > .col-11-xlarge { + width: 91.66667%; + } + + .row > .off-11-xlarge { + margin-left: 91.66667%; + } + + .row > .col-12-xlarge { + width: 100%; + } + + .row > .off-12-xlarge { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 25px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-large { + order: -1; + } + + .row > .col-1-large { + width: 8.33333%; + } + + .row > .off-1-large { + margin-left: 8.33333%; + } + + .row > .col-2-large { + width: 16.66667%; + } + + .row > .off-2-large { + margin-left: 16.66667%; + } + + .row > .col-3-large { + width: 25%; + } + + .row > .off-3-large { + margin-left: 25%; + } + + .row > .col-4-large { + width: 33.33333%; + } + + .row > .off-4-large { + margin-left: 33.33333%; + } + + .row > .col-5-large { + width: 41.66667%; + } + + .row > .off-5-large { + margin-left: 41.66667%; + } + + .row > .col-6-large { + width: 50%; + } + + .row > .off-6-large { + margin-left: 50%; + } + + .row > .col-7-large { + width: 58.33333%; + } + + .row > .off-7-large { + margin-left: 58.33333%; + } + + .row > .col-8-large { + width: 66.66667%; + } + + .row > .off-8-large { + margin-left: 66.66667%; + } + + .row > .col-9-large { + width: 75%; + } + + .row > .off-9-large { + margin-left: 75%; + } + + .row > .col-10-large { + width: 83.33333%; + } + + .row > .off-10-large { + margin-left: 83.33333%; + } + + .row > .col-11-large { + width: 91.66667%; + } + + .row > .off-11-large { + margin-left: 91.66667%; + } + + .row > .col-12-large { + width: 100%; + } + + .row > .off-12-large { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 25px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-medium { + order: -1; + } + + .row > .col-1-medium { + width: 8.33333%; + } + + .row > .off-1-medium { + margin-left: 8.33333%; + } + + .row > .col-2-medium { + width: 16.66667%; + } + + .row > .off-2-medium { + margin-left: 16.66667%; + } + + .row > .col-3-medium { + width: 25%; + } + + .row > .off-3-medium { + margin-left: 25%; + } + + .row > .col-4-medium { + width: 33.33333%; + } + + .row > .off-4-medium { + margin-left: 33.33333%; + } + + .row > .col-5-medium { + width: 41.66667%; + } + + .row > .off-5-medium { + margin-left: 41.66667%; + } + + .row > .col-6-medium { + width: 50%; + } + + .row > .off-6-medium { + margin-left: 50%; + } + + .row > .col-7-medium { + width: 58.33333%; + } + + .row > .off-7-medium { + margin-left: 58.33333%; + } + + .row > .col-8-medium { + width: 66.66667%; + } + + .row > .off-8-medium { + margin-left: 66.66667%; + } + + .row > .col-9-medium { + width: 75%; + } + + .row > .off-9-medium { + margin-left: 75%; + } + + .row > .col-10-medium { + width: 83.33333%; + } + + .row > .off-10-medium { + margin-left: 83.33333%; + } + + .row > .col-11-medium { + width: 91.66667%; + } + + .row > .off-11-medium { + margin-left: 91.66667%; + } + + .row > .col-12-medium { + width: 100%; + } + + .row > .off-12-medium { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 25px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-small { + order: -1; + } + + .row > .col-1-small { + width: 8.33333%; + } + + .row > .off-1-small { + margin-left: 8.33333%; + } + + .row > .col-2-small { + width: 16.66667%; + } + + .row > .off-2-small { + margin-left: 16.66667%; + } + + .row > .col-3-small { + width: 25%; + } + + .row > .off-3-small { + margin-left: 25%; + } + + .row > .col-4-small { + width: 33.33333%; + } + + .row > .off-4-small { + margin-left: 33.33333%; + } + + .row > .col-5-small { + width: 41.66667%; + } + + .row > .off-5-small { + margin-left: 41.66667%; + } + + .row > .col-6-small { + width: 50%; + } + + .row > .off-6-small { + margin-left: 50%; + } + + .row > .col-7-small { + width: 58.33333%; + } + + .row > .off-7-small { + margin-left: 58.33333%; + } + + .row > .col-8-small { + width: 66.66667%; + } + + .row > .off-8-small { + margin-left: 66.66667%; + } + + .row > .col-9-small { + width: 75%; + } + + .row > .off-9-small { + margin-left: 75%; + } + + .row > .col-10-small { + width: 83.33333%; + } + + .row > .off-10-small { + margin-left: 83.33333%; + } + + .row > .col-11-small { + width: 91.66667%; + } + + .row > .off-11-small { + margin-left: 91.66667%; + } + + .row > .col-12-small { + width: 100%; + } + + .row > .off-12-small { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -3.75px; + margin-left: -3.75px; + } + + .row.gtr-25 > * { + padding: 3.75px 0 0 3.75px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -3.75px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 3.75px; + } + + .row.gtr-50 { + margin-top: -7.5px; + margin-left: -7.5px; + } + + .row.gtr-50 > * { + padding: 7.5px 0 0 7.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -7.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 7.5px; + } + + .row { + margin-top: -15px; + margin-left: -15px; + } + + .row > * { + padding: 15px 0 0 15px; + } + + .row.gtr-uniform { + margin-top: -15px; + } + + .row.gtr-uniform > * { + padding-top: 15px; + } + + .row.gtr-150 { + margin-top: -22.5px; + margin-left: -22.5px; + } + + .row.gtr-150 > * { + padding: 22.5px 0 0 22.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -22.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 22.5px; + } + + .row.gtr-200 { + margin-top: -30px; + margin-left: -30px; + } + + .row.gtr-200 > * { + padding: 30px 0 0 30px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -30px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 30px; + } + + } + +/* Form */ + + form label { + color: #3e3e3e; + font-weight: 700; + display: block; + margin: 0 0 0.5em 0; + } + + form input[type=text], + form input[type=email], + form input[type=password], + form select, + form textarea { + -moz-transition: background .2s ease-in-out, box-shadow .2s ease-in-out; + -webkit-transition: background .2s ease-in-out, box-shadow .2s ease-in-out; + -ms-transition: background .2s ease-in-out, box-shadow .2s ease-in-out; + transition: background .2s ease-in-out, box-shadow .2s ease-in-out; + -webkit-appearance: none; + display: block; + border: 0; + padding: 0.75em; + font-size: 1em; + border-radius: 8px; + border: solid 1px #ddd; + background: #fff; + color: #bbb; + box-shadow: inset 0px 2px 3px 1px rgba(0, 0, 0, 0.05), 0px 1px 0px 0px rgba(255, 255, 255, 0.025); + width: 100%; + } + + form input[type=text]:focus, + form input[type=email]:focus, + form input[type=password]:focus, + form select:focus, + form textarea:focus { + background: #fafafa; + box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.05), 0px 1px 0px 0px rgba(255, 255, 255, 0.025), inset 0px 0px 2px 1px #43bff0; + } + + form textarea { + height: 15em; + } + + form .actions:last-child { + margin-bottom: 0; + } + + form ::-webkit-input-placeholder { + color: #555 !important; + } + + form :-moz-placeholder { + color: #555 !important; + } + + form ::-moz-placeholder { + color: #555 !important; + } + + form :-ms-input-placeholder { + color: #555 !important; + } + + form ::-moz-focus-inner { + border: 0; + } + +/* Tables */ + + table { + width: 100%; + } + + table.default { + width: 100%; + } + + table.default tr { + border-top: solid 1px #eee; + } + + table.default tr:first-child { + border-top: 0; + } + + table.default td { + padding: 0.5em 1em 0.5em 1em; + } + + table.default th { + text-align: left; + padding: 0.5em 1em 0.5em 1em; + font-weight: 600; + margin: 0 0 1em 0; + } + + table.default thead { + background: #4f4f4f; + color: #fff; + } + +/* Section/Article */ + + section, article { + margin-bottom: 3em; + } + + section > :last-child, + article > :last-child, + section:last-child, + article:last-child { + margin-bottom: 0; + } + +/* Image */ + + .image { + display: inline-block; + position: relative; + } + + .image img { + display: block; + width: 100%; + } + + .image.fit { + display: block; + width: 100%; + } + + .image.featured { + display: block; + width: 100%; + margin: 0 0 2em 0; + } + + .image.left { + float: left; + margin: 0 2em 2em 0; + } + + .image.centered { + display: block; + margin: 0 0 2em 0; + } + + .image.centered img { + margin: 0 auto; + width: auto; + } + +/* Button */ + + input[type="button"], + input[type="submit"], + input[type="reset"], + button, + .button { + background-image: url("images/bg.png"), -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + background-image: url("images/bg.png"), -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + background-image: url("images/bg.png"), -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + background-image: url("images/bg.png"), linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + -moz-transition: background-color .2s ease-in-out; + -webkit-transition: background-color .2s ease-in-out; + -ms-transition: background-color .2s ease-in-out; + transition: background-color .2s ease-in-out; + -webkit-appearance: none; + position: relative; + display: inline-block; + color: #fff !important; + text-decoration: none; + font-weight: 700; + border: 0; + outline: 0; + cursor: pointer; + border-radius: 8px; + text-shadow: -1px -1px 0.5px rgba(0, 0, 0, 0.5); + overflow: hidden; + box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.5), inset 0px 2px 1px 0px rgba(255, 255, 255, 0.75); + background-color: #43B3E0; + padding: 1em 2.35em 1em 2.35em; + font-size: 1.1em; + max-width: 24em; + } + + input[type="button"]:hover, + input[type="submit"]:hover, + input[type="reset"]:hover, + button:hover, + .button:hover { + background-color: #43bff0; + color: #fff !important; + } + + input[type="button"]:active, + input[type="submit"]:active, + input[type="reset"]:active, + button:active, + .button:active { + background-color: #3BA8D3; + top: 1px; + } + + input[type="button"].large, + input[type="submit"].large, + input[type="reset"].large, + button.large, + .button.large { + font-size: 1.5em; + letter-spacing: -0.025em; + } + + input[type="button"].alt, + input[type="submit"].alt, + input[type="reset"].alt, + button.alt, + .button.alt { + background-color: #444; + box-shadow: inset 0px 0px 0px 1px #242424, inset 0px 2px 1px 0px rgba(255, 255, 255, 0.2); + } + + input[type="button"].alt:hover, + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: #4f4f4f; + color: #fff !important; + } + + input[type="button"].alt:active, + input[type="submit"].alt:active, + input[type="reset"].alt:active, + button.alt:active, + .button.alt:active { + background-color: #3f3f3f; + } + +/* List */ + + ul { + list-style: disc; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ol { + list-style: decimal; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + +/* Social */ + + ul.social { + cursor: default; + margin: 0; + list-style: none; + padding-left: 0; + } + + ul.social li { + position: relative; + display: inline-block; + margin: 0.25em; + top: 0; + padding-left: 0; + } + + ul.social li a { + -moz-transition: top .2s ease-in-out; + -webkit-transition: top .2s ease-in-out; + -ms-transition: top .2s ease-in-out; + transition: top .2s ease-in-out; + display: block; + width: 48px; + height: 48px; + border-radius: 6px; + top: 0; + position: relative; + } + + ul.social li a:before { + background-image: url("images/bg.png"), -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + background-image: url("images/bg.png"), -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + background-image: url("images/bg.png"), -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + background-image: url("images/bg.png"), linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2)); + -moz-transition: background-color .2s ease-in-out; + -webkit-transition: background-color .2s ease-in-out; + -ms-transition: background-color .2s ease-in-out; + transition: background-color .2s ease-in-out; + background-color: #444; + border-radius: 6px; + box-shadow: inset 0px 0px 0px 1px #282828, inset 0px 2px 1px 0px rgba(255, 255, 255, 0.1); + color: #2E2E2E !important; + display: block; + font-size: 26px; + height: 48px; + line-height: 48px; + text-align: center; + outline: 0; + overflow: hidden; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.1); + width: 48px; + } + + ul.social li a.fa-twitter { + background-color: #2DAAE4; + } + + ul.social li a.fa-facebook-f { + background-color: #3C5A98; + } + + ul.social li a.fa-dribbble { + background-color: #C4376B; + } + + ul.social li a.fa-linkedin-in { + background-color: #006599; + } + + ul.social li a.fa-tumblr { + background-color: #51718A; + } + + ul.social li a.fa-google-plus { + background-color: #DA2713; + } + + ul.social li a.fa-github { + background-color: #FAFAFA; + } + + ul.social li a.fa-rss { + background-color: #F2600B; + } + + ul.social li a.fa-instagram { + background-color: #E0D7C8; + } + + ul.social li a.fa-foursquare { + background-color: #39A3D4; + } + + ul.social li a.fa-skype { + background-color: #10BEF1; + } + + ul.social li a.fa-soundcloud { + background-color: #FE5419; + } + + ul.social li a.fa-youtube { + background-color: #BF2E25; + } + + ul.social li a.fa-blogger { + background-color: #FF6501; + } + + ul.social li a.fa-flickr { + background-color: #0062DB; + } + + ul.social li a.fa-vimeo { + background-color: #4C8AB0; + } + + ul.social li a:hover { + top: -5px; + } + + ul.social li a:hover:before { + background-color: transparent; + } + +/* Actions */ + + ul.actions { + list-style: none; + padding-left: 0; + } + + ul.actions li { + display: inline-block; + margin: 0 0 0 1em; + padding-left: 0; + } + + ul.actions li:first-child { + margin-left: 0; + } + +/* Box */ + + .box { + background: #fff; + box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15), 0px 2px 3px 0px rgba(0, 0, 0, 0.1); + text-align: center; + padding: 2em; + } + + .box.style1 { + padding: 3em 2em 3.5em 2em; + } + + .box.style1 h3 { + margin-bottom: 0.5em; + } + + .box.style2 h3 { + margin-bottom: 0.25em; + } + + .box.style2 .image { + position: relative; + left: 2em; + top: 2em; + margin: -4em 0 4em -4em; + width: auto; + } + +/* Icons */ + + .icon { + text-decoration: none; + text-decoration: none; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon:before { + font-size: 1.25em; + } + + .icon > .label { + display: none; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon.featured { + color: #EA8A95; + display: block; + margin: 0 0 1.5em 0; + cursor: default; + } + + .icon.featured:before { + font-size: 6em; + } + +/* Wrappers */ + + .wrapper { + background-image: url("images/bg.png"); + box-shadow: inset 0px 1px 0px 0px rgba(0, 0, 0, 0.05), inset 0px 2px 3px 0px rgba(0, 0, 0, 0.1); + padding: 8em 0 8em 0; + text-align: center; + } + + .wrapper.style1 { + background-image: none; + background-color: #fff; + } + + .wrapper.style2 { + background-color: #fafafa; + text-shadow: 1px 1px 0px #fff; + } + + .wrapper.style3 { + background-color: #f4f4f4; + text-shadow: 1px 1px 0px #fff; + } + + .wrapper.style4 { + background-color: #303030; + color: #999; + text-shadow: -1px -1px 0px #181818; + } + + .wrapper.style4 h1, .wrapper.style4 h2, .wrapper.style4 h3, .wrapper.style4 h4, .wrapper.style4 h5, .wrapper.style4 h6 { + color: #fff; + } + + .wrapper.style4 form input[type=text], + .wrapper.style4 form input[type=password], + .wrapper.style4 form select, + .wrapper.style4 form textarea { + border: none; + background: #282828; + } + + .wrapper.style4 form input[type=text]:focus, + .wrapper.style4 form input[type=password]:focus, + .wrapper.style4 form select:focus, + .wrapper.style4 form textarea:focus { + background: #252525; + } + +/* Nav */ + + #nav { + background-color: #282828; + text-align: center; + position: fixed; + left: 0; + top: 0; + width: 100%; + z-index: 10000; + cursor: default; + height: 3.5em; + line-height: 3.5em; + } + + #nav ul { + margin-bottom: 0; + list-style: none; + padding-left: 0; + } + + #nav li { + display: inline-block; + padding-left: 0; + } + + #nav a { + -moz-transition: background-color .2s ease-in-out; + -webkit-transition: background-color .2s ease-in-out; + -ms-transition: background-color .2s ease-in-out; + transition: background-color .2s ease-in-out; + position: relative; + display: block; + color: #fff; + text-decoration: none; + outline: 0; + font-weight: 600; + border-radius: 8px; + color: #fff; + height: 2.5em; + line-height: 2.5em; + padding: 0 1.25em; + } + + #nav a:hover { + color: #fff !important; + background: #383838; + } + + #nav a.active { + background: #484848; + } + + #nav a.active:before { + content: ''; + display: block; + position: absolute; + bottom: -0.6em; + left: 50%; + margin-left: -0.75em; + border-left: solid 0.75em transparent; + border-right: solid 0.75em transparent; + border-top: solid 0.6em #282828; + } + +/* Articles */ + + body > article { + margin-bottom: 0; + } + + #top { + padding: 10em 0 10em 0; + text-align: left; + } + + #top .image { + border-radius: 100%; + width: 20em; + height: 20em; + margin: 0; + } + + #top .image img { + border-radius: 100%; + } + + #top h1 { + margin-top: 0.35em; + } + + #top p { + font-size: 1.5em; + line-height: 1.75em; + } + + #top p a { + color: inherit; + } + + #contact footer { + font-size: 0.9em; + } + +/* Copyright */ + + #copyright { + color: #666; + font-size: 1em; + line-height: 1em; + list-style: none; + padding-left: 0; + margin-bottom: 0; + } + + #copyright li { + display: inline-block; + border-left: solid 1px rgba(0, 0, 0, 0.5); + box-shadow: -1px 0px 0px 0px rgba(255, 255, 255, 0.1); + padding: 0 0 0 1em; + margin: 0 0 0 1em; + } + + #copyright li:first-child { + border: 0; + box-shadow: none; + padding-left: 0; + margin-left: 0; + } + + #copyright a { + -moz-transition: color .2s ease-in-out; + -webkit-transition: color .2s ease-in-out; + -ms-transition: color .2s ease-in-out; + transition: color .2s ease-in-out; + color: inherit; + } + + #copyright a:hover { + color: #777; + } + +/* Large */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body { + font-size: 11pt; + } + + input, textarea, select { + font-size: 11pt; + } + + header { + margin: 0 0 4em 0; + } + + /* Wrappers */ + + .wrapper { + padding: 5em 0 5em 0; + text-align: center; + } + + .wrapper.style4 .row-special { + margin: 2em 0 0 0; + padding: 2em 0 2em 0; + } + + /* Articles */ + + #top { + padding: 8em 0; + } + + #top .image { + width: 24em; + height: 24em; + margin: 0; + } + + } + +/* Medium */ + + @media screen and (max-width: 980px) { + + /* Articles */ + + #top { + text-align: center; + padding: 5em 0; + } + + #top .image { + margin: 0 auto 2em auto; + } + + } + +/* Small */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body { + padding-top: 44px; + } + + body, input, textarea, select { + line-height: 1.75em; + font-size: 10pt; + letter-spacing: 0; + } + + h1, h2, h3, h4, h5, h6 { + font-size: 1.25em; + margin: 0 0 0.4em 0; + } + + h1 { + font-size: 2.25em; + line-height: 1.25em; + } + + header { + margin: 0 0 2em 0; + } + + header > p { + font-size: 1.25em; + } + + footer { + margin: 2.5em 0 0 0; + } + + footer > p { + font-size: 1.25em; + } + + hr { + margin: 1.5em 0 2em 0; + } + + /* Section/Article */ + + section, article { + clear: both; + } + + /* Button */ + + input[type="button"], + input[type="submit"], + input[type="reset"], + button, + .button { + text-align: center; + font-size: 1.2em; + width: 100%; + padding: 1em 0 1em 0; + } + + input[type="button"].large, + input[type="submit"].large, + input[type="reset"].large, + button.large, + .button.large { + font-size: 1.2em; + letter-spacing: 0; + } + + /* Social */ + + ul.social { + padding: 1em 0.5em 0 0.5em; + } + + ul.social li { + margin: 0.5em 0.5em 0.5em 0.5em; + } + + ul.social li a { + top: 0 !important; + } + + ul.social li a:before { + background-color: transparent !important; + } + + /* Actions */ + + ul.actions { + margin: 0; + } + + ul.actions li { + display: block; + margin: 15px 0 0 0; + } + + ul.actions li:first-child { + margin-top: 0; + } + + /* Box */ + + .box { + padding: 30px 20px 30px 20px; + margin: 0 0 20px 0 !important; + } + + .box h3 { + margin-bottom: 0.25em; + } + + .box .image.centered { + margin-bottom: 1em; + } + + .box .image.featured { + position: relative; + left: 20px; + top: 20px; + margin: -50px 0 50px -40px; + width: auto; + } + + .box.style1 { + max-width: 32em; + margin-left: auto !important; + margin-right: auto !important; + } + + .box.style2 { + max-width: 32em; + margin-left: auto !important; + margin-right: auto !important; + } + + /* Wrappers */ + + .wrapper { + padding: 3em 0; + text-align: center; + } + + /* Nav */ + + #nav { + height: 44px; + line-height: 44px; + } + + #nav a { + padding: 0 0.75em; + height: inherit; + line-height: inherit; + border-radius: 0; + } + + #nav a:hover { + background-color: transparent; + } + + /* Articles */ + + #top { + padding: 3em 0; + } + + #top .image { + width: 15em; + height: 15em; + margin-bottom: 0; + } + + #top p { + font-size: 1em; + } + + #contact footer { + margin: 0; + } + + /* Copyright */ + + #copyright { + font-size: 1em; + margin: 0; + } + + #copyright li { + display: block; + margin: 1em 0 0 0; + padding: 0; + box-shadow: none; + border-left: 0; + } + + #copyright li:first-child { + margin-top: 0; + } + + } +</style> +</html>