diff --git a/daux.phar b/daux.phar
index e8d9712..ff8c205 100755
Binary files a/daux.phar and b/daux.phar differ
diff --git a/docs/00_Getting_Started.md b/docs/00_Getting_Started.md
index d6fa5a5..76de997 100644
--- a/docs/00_Getting_Started.md
+++ b/docs/00_Getting_Started.md
@@ -69,32 +69,16 @@ Daux.io is extendable and comes by default with two export formats:
## Feature Matrix
-
-
- Feature | HTML | Confluence |
-
-
- Landing Pages | √ | X |
-
-
- Index Pages | √ | √ |
-
-
- Internal Links | √ | √ |
-
-
- Code Highlight | √ | √ (Using macros) |
-
-
- Live Mode | √ | X |
-
-
- Ordering Pages | √ | X (API Limitation) |
-
-
- Google / Piwik analytics | √ | X |
-
-
+Feature | HTML | Single Page HTML | Confluence
+--------------:|:----:|:----------------:|:----------:
+Multilanguage | √ | X (Soon) | X
+Landing Pages | √ | X | X
+Index Pages | √ | √ | √
+Internal Links | √ | X (Soon) | √
+Code Highlight | √ | X (Soon) | √ (Using macros)
+Live Mode | √ | X | X
+Pages Ordering | √ | √ | X (API Limitation)
+Google / Piwik analytics | √ | √ | √ (Configured on Conflence)
## Folders
diff --git a/gulpfile.js b/gulpfile.js
index a70db43..d2dab20 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -11,7 +11,8 @@ var resources = {
daux_blue:{source: "themes/daux/less/theme-blue.less", dest: "themes/daux/css/"},
daux_green:{source: "themes/daux/less/theme-green.less", dest: "themes/daux/css/"},
daux_navy:{source: "themes/daux/less/theme-navy.less", dest: "themes/daux/css/"},
- daux_red:{source: "themes/daux/less/theme-red.less", dest: "themes/daux/css/"}
+ daux_red:{source: "themes/daux/less/theme-red.less", dest: "themes/daux/css/"},
+ daux_singlepage:{source: "themes/daux_singlepage/less/main.less", dest: "themes/daux_singlepage/css/"}
};
var unusedRules = [
diff --git a/libs/Daux.php b/libs/Daux.php
index 15d5245..5d480e6 100644
--- a/libs/Daux.php
+++ b/libs/Daux.php
@@ -185,7 +185,8 @@ class Daux
$this->finalizeTree($this->tree);
}
- public function sortTree(Directory $current) {
+ public function sortTree(Directory $current)
+ {
$current->sort();
foreach ($current->getEntries() as $entry) {
if ($entry instanceof Directory) {
@@ -282,6 +283,7 @@ class Daux
{
$default = [
'confluence' => '\Todaymade\Daux\Format\Confluence\Generator',
+ 'html-file' => '\Todaymade\Daux\Format\HTMLFile\Generator',
'html' => '\Todaymade\Daux\Format\HTML\Generator',
];
diff --git a/libs/Format/Base/EmbedImages.php b/libs/Format/Base/EmbedImages.php
new file mode 100644
index 0000000..ab5c083
--- /dev/null
+++ b/libs/Format/Base/EmbedImages.php
@@ -0,0 +1,82 @@
+tree = $tree;
+ }
+
+ public function embed($page, Content $file, $callback)
+ {
+ return preg_replace_callback(
+ "/
]*src=['\"]([^\"]*)['\"][^>]*>/",
+ function ($matches) use ($file, $callback) {
+
+ if ($result = $this->findImage($matches[1], $matches[0], $file, $callback)) {
+ return $result;
+ }
+
+ return $matches[0];
+ },
+ $page
+ );
+ }
+
+ private function getAttributes($tag)
+ {
+ $dom = new DOMDocument();
+ $dom->loadHTML($tag);
+
+ $img = $dom->getElementsByTagName('img')->item(0);
+
+ $attributes = ['align', 'class', 'title', 'style', 'alt', 'height', 'width'];
+ $used = [];
+ foreach ($attributes as $attr) {
+ if ($img->attributes->getNamedItem($attr)) {
+ $used[$attr] = $img->attributes->getNamedItem($attr)->value;
+ }
+ }
+
+ return $used;
+ }
+
+ private function findImage($src, $tag, Content $file, $callback)
+ {
+ //for protocol relative or http requests : keep the original one
+ if (substr($src, 0, strlen("http")) === "http" || substr($src, 0, strlen("//")) === "//") {
+ return $src;
+ }
+
+ //Get the path to the file, relative to the root of the documentation
+ $url = DauxHelper::getCleanPath(dirname($file->getUrl()) . '/' . $src);
+
+ //Get any file corresponding to the right one
+ $file = DauxHelper::getFile($this->tree, $url);
+
+
+ if ($file === false) {
+ return false;
+ }
+
+ $result = $callback($src, $this->getAttributes($tag), $file);
+
+ return $result ?: $src;
+ }
+}
diff --git a/libs/Format/Confluence/ContentPage.php b/libs/Format/Confluence/ContentPage.php
index 9d31ce1..fdf0e24 100644
--- a/libs/Format/Confluence/ContentPage.php
+++ b/libs/Format/Confluence/ContentPage.php
@@ -1,7 +1,7 @@
]*src=['\"]([^\"]*)['\"][^>]*>/",
- function($matches) {
+ $content = (new EmbedImages($this->params['tree']))
+ ->embed(
+ $content,
+ $this->file,
+ function ($src, array $attributes, Raw $file) {
+ $filename = basename($file->getPath());
- if ($result = $this->findImage($matches[1], $matches[0])) {
- return $result;
+ //Add the attachment for later upload
+ $this->attachments[] = ['filename' => $filename, 'file' => $file];
+
+ return $this->createImageTag($filename, $attributes);
}
+ );
- return $matches[0];
- },
- $page
- );
-
- return $page;
- }
-
- private function findImage($src, $tag)
- {
- //for protocol relative or http requests : keep the original one
- if (substr($src, 0, strlen("http")) === "http" || substr($src, 0, strlen("//")) === "//") {
- return $src;
- }
-
- //Get the path to the file, relative to the root of the documentation
- $url = DauxHelper::getCleanPath(dirname($this->file->getUrl()) . '/' . $src);
-
- //Get any file corresponding to the right one
- $file = DauxHelper::getFile($this->params['tree'], $url);
-
-
- if ($file === false) {
- return false;
- }
-
- $filename = basename($file->getPath());
-
- //Add the attachment for later upload
- $this->attachments[] = ['filename' => $filename, 'file' => $file];
-
- return $this->createImageTag($filename, $this->getAttributes($tag));
- }
-
- private function getAttributes($tag)
- {
- $dom = new DOMDocument();
- $dom->loadHTML($tag);
-
- $img = $dom->getElementsByTagName('img')[0];
-
- $attributes = ['align', 'class', 'title', 'style', 'alt', 'height', 'width'];
- $used = [];
- foreach ($attributes as $attr) {
- if ($img->attributes->getNamedItem($attr)) {
- $used[$attr] = $img->attributes->getNamedItem($attr)->value;
- }
- }
-
- return $used;
+ return $content;
}
private function createImageTag($filename, $attributes)
diff --git a/libs/Format/Confluence/ContentTypes/Markdown/ImageRenderer.php b/libs/Format/Confluence/ContentTypes/Markdown/ImageRenderer.php
index 95207fe..121a272 100644
--- a/libs/Format/Confluence/ContentTypes/Markdown/ImageRenderer.php
+++ b/libs/Format/Confluence/ContentTypes/Markdown/ImageRenderer.php
@@ -17,11 +17,11 @@ class ImageRenderer extends \League\CommonMark\Inline\Renderer\ImageRenderer
{
// External Images need special handling
if (strpos($inline->getUrl(), 'http') === 0) {
- return new HtmlElement(
- 'ac:image',
- [],
- new HtmlElement('ri:url', ['ri:value' => $inline->getUrl()])
- );
+ return new HtmlElement(
+ 'ac:image',
+ [],
+ new HtmlElement('ri:url', ['ri:value' => $inline->getUrl()])
+ );
}
return parent::render($inline, $htmlRenderer);
diff --git a/libs/Format/HTML/Template.php b/libs/Format/HTML/Template.php
index 5072560..86c7bbb 100644
--- a/libs/Format/HTML/Template.php
+++ b/libs/Format/HTML/Template.php
@@ -96,7 +96,7 @@ class Template
foreach ($tree->getEntries() as $node) {
$url = $node->getUri();
if ($node instanceof Content) {
- if (in_array($node->getName(), ['index', '_index'])) {
+ if ($node->isIndex()) {
continue;
}
diff --git a/libs/Format/HTMLFile/Book.php b/libs/Format/HTMLFile/Book.php
new file mode 100644
index 0000000..4a05d8a
--- /dev/null
+++ b/libs/Format/HTMLFile/Book.php
@@ -0,0 +1,142 @@
+tree = $tree;
+ $this->cover = $cover;
+ }
+
+ protected function getStyles()
+ {
+ // TODO :: un-hardcode that
+ return '';
+ }
+
+ protected function getSectionId(Content $node)
+ {
+ foreach ($this->pages as $id => $page) {
+ if ($page['page'] == $node) {
+ return $id;
+ }
+ }
+
+ throw new RuntimeException("Could not find the content page");
+ }
+
+ protected function buildNavigation(Directory $tree)
+ {
+ $nav = [];
+ foreach ($tree->getEntries() as $node) {
+ if ($node instanceof Content) {
+ if ($node->isIndex()) {
+ continue;
+ }
+
+ $nav[] = [
+ 'title' => $node->getTitle(),
+ 'href' => '#section_' . $this->getSectionId($node),
+ ];
+ } elseif ($node instanceof Directory) {
+ if (!$node->hasContent()) {
+ continue;
+ }
+
+ $page_index = ($index = $node->getIndexPage())? $index : $node->getFirstPage();
+
+ $nav[] = [
+ 'title' => $node->getTitle(),
+ 'href' => "#section_" . $this->getSectionId($page_index),
+ 'children' => $this->buildNavigation($node)
+ ];
+ }
+ }
+ return $nav;
+ }
+
+ private function renderNavigation($entries)
+ {
+ $nav = "";
+ foreach ($entries as $entry) {
+ if (array_key_exists('children', $entry)) {
+ if (array_key_exists('href', $entry)) {
+ $link = '' . $entry['title'] . '';
+ } else {
+ $link = '' . $entry['title'] . '';
+ }
+
+ $link .= $this->renderNavigation($entry['children']);
+ } else {
+ $link = '' . $entry['title'] . '';
+ }
+
+ $nav .= "$link";
+ }
+
+ return "";
+ }
+
+ protected function generateTOC()
+ {
+ return "Table of Contents
" .
+ $this->renderNavigation($this->buildNavigation($this->tree)) .
+ "
";
+ }
+
+ protected function generateCover()
+ {
+ return "" .
+ "
{$this->cover['title']}
" .
+ "
{$this->cover['subject']} by {$this->cover['author']}
" .
+ "
";
+ }
+
+ protected function generatePages()
+ {
+ $content = '';
+ foreach ($this->pages as $section => $page) {
+ $content .= '';
+ $content .= '' . $page['page']->getTitle() . '
';
+ $content .= '';
+ $content .= '
';
+ }
+ return $content;
+ }
+
+ public function addPage($page, $content)
+ {
+ $this->pages[] = ['page' => $page, 'content' => $content];
+ }
+
+ public function generateHead()
+ {
+ $head = [
+ "{$this->cover['title']}",
+ "",
+ "",
+ "",
+ $this->getStyles(),
+ ];
+
+ return '' . implode('', $head) . '';
+ }
+
+ public function generateBody()
+ {
+ return '' . $this->generateCover() . $this->generateTOC() . $this->generatePages() . '';
+ }
+
+ public function generate()
+ {
+ return "" . $this->generateHead() . $this->generateBody() . "";
+ }
+}
diff --git a/libs/Format/HTMLFile/ContentPage.php b/libs/Format/HTMLFile/ContentPage.php
new file mode 100644
index 0000000..289e460
--- /dev/null
+++ b/libs/Format/HTMLFile/ContentPage.php
@@ -0,0 +1,34 @@
+params['tree']))
+ ->embed(
+ $content,
+ $this->file,
+ function ($src, array $attributes, Raw $file) {
+
+ $content = base64_encode(file_get_contents($file->getPath()));
+ $attr = '';
+ foreach ($attributes as $name => $value) {
+ $attr .= ' ' .$name . '="' . htmlentities($value, ENT_QUOTES, 'UTF-8', false) . '"';
+ }
+
+ return "
";
+ }
+ );
+
+ return $content;
+ }
+}
diff --git a/libs/Format/HTMLFile/Generator.php b/libs/Format/HTMLFile/Generator.php
new file mode 100644
index 0000000..b5c51d6
--- /dev/null
+++ b/libs/Format/HTMLFile/Generator.php
@@ -0,0 +1,103 @@
+daux = $daux;
+ }
+
+ /**
+ * @return array
+ */
+ public function getContentTypes()
+ {
+ return [
+ 'markdown' => new ContentType($this->daux->getParams())
+ ];
+ }
+
+ protected function initPDF()
+ {
+ // create new PDF document
+ $pdf = new Book(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
+
+ $params = $this->daux->getParams();
+
+ // set document information
+ $pdf->SetCreator(PDF_CREATOR);
+
+
+ // set default header data
+ $pdf->SetHeaderData('', 0, $params['title'], $params['tagline']);
+
+ // set header and footer fonts
+ $pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
+ $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
+
+ // set default monospaced font
+ $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
+
+ // set margins
+ $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
+ $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
+ $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
+
+ // set auto page breaks
+ $pdf->SetAutoPageBreak(true, PDF_MARGIN_BOTTOM);
+
+ // set image scale factor
+ $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
+
+ // set font
+ $pdf->SetFont('helvetica', '', 10);
+
+ return $pdf;
+ }
+
+
+ /**
+ * {@inheritdoc}
+ */
+ public function generateAll(InputInterface $input, OutputInterface $output, $width)
+ {
+ $params = $this->daux->getParams();
+
+ $data = ['author' => $params['author'], 'title' => $params['title'], 'subject' => $params['tagline']];
+
+ $book = new Book($this->daux->tree, $data);
+
+ $current = $this->daux->tree->getIndexPage();
+ while ($current) {
+ $this->runAction(
+ "Generating " . $current->getTitle(),
+ $output,
+ $width,
+ function () use ($book, $current, $params) {
+ $contentType = $this->daux->getContentTypeHandler()->getType($current);
+ $content = ContentPage::fromFile($current, $params, $contentType)->getContent();
+ $book->addPage($current, $content);
+ }
+ );
+
+ $current = $current->getNext();
+ }
+
+ $content = $book->generate();
+ file_put_contents($input->getOption('destination') . '/file.html', $content);
+ }
+}
diff --git a/libs/Tree/Content.php b/libs/Tree/Content.php
index b490c57..bb1151f 100644
--- a/libs/Tree/Content.php
+++ b/libs/Tree/Content.php
@@ -69,6 +69,11 @@ class Content extends Entry
$this->next = $next;
}
+ public function isIndex()
+ {
+ return $this->name == 'index' || $this->name == '_index';
+ }
+
public function dump()
{
$dump = parent::dump();
diff --git a/libs/Tree/Directory.php b/libs/Tree/Directory.php
index 47a791b..d14603a 100644
--- a/libs/Tree/Directory.php
+++ b/libs/Tree/Directory.php
@@ -64,7 +64,8 @@ class Directory extends Entry
$this->children = $final;
}
- private function sortBucket($bucket, $final) {
+ private function sortBucket($bucket, $final)
+ {
uasort($bucket, function(Entry $a, Entry $b) {
return strcasecmp($a->getName(), $b->getName());
});
diff --git a/themes/daux_singlepage/css/main.min.css b/themes/daux_singlepage/css/main.min.css
new file mode 100755
index 0000000..927cc69
--- /dev/null
+++ b/themes/daux_singlepage/css/main.min.css
@@ -0,0 +1 @@
+/*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Merriweather,EB Garamond,Georgia,serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.1px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{font-family:Merriweather,EB Garamond,Georgia,serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}h1 small{font-size:24px}h2 small{font-size:18px}h3 small,h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.42857143;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.42857143}@font-face{font-family:EB Garamond;src:local('EB Garamond 12 Regular'),url(//brick.a.ssl.fastly.net/fonts/ebgaramond/400.woff) format('woff')}@font-face{font-family:EB Garamond;font-style:italic;font-weight:400i;src:local('EB Garamond 12 Italic'),url(//brick.a.ssl.fastly.net/fonts/ebgaramond/400i.woff) format('woff')}@font-face{font-family:Merriweather;font-weight:250;src:local('Merriweather Light'),url(//brick.a.ssl.fastly.net/fonts/merriweather/250.woff) format('woff')}@font-face{font-family:Merriweather;font-style:italic;font-weight:250i;src:local('Merriweather Light Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/250i.woff) format('woff')}@font-face{font-family:Merriweather;src:local('Merriweather'),url(//brick.a.ssl.fastly.net/fonts/merriweather/400.woff) format('woff')}@font-face{font-family:Merriweather;font-style:italic;font-weight:400i;src:local('Merriweather Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/400i.woff) format('woff')}@font-face{font-family:Merriweather;font-weight:600;src:local(''),url(//brick.a.ssl.fastly.net/fonts/merriweather/600.woff) format('woff')}@font-face{font-family:Merriweather;font-style:italic;font-weight:600i;src:local(''),url(//brick.a.ssl.fastly.net/fonts/merriweather/600i.woff) format('woff')}@font-face{font-family:Merriweather;font-weight:700;src:local('Merriweather Bold'),url(//brick.a.ssl.fastly.net/fonts/merriweather/700.woff) format('woff')}@font-face{font-family:Merriweather;font-style:italic;font-weight:700i;src:local('Merriweather Bold Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/700i.woff) format('woff')}@font-face{font-family:Merriweather;font-weight:900;src:local('Merriweather Heavy'),url(//brick.a.ssl.fastly.net/fonts/merriweather/900.woff) format('woff')}@font-face{font-family:Merriweather;font-style:italic;font-weight:900i;src:local('Merriweather Heavy Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/900i.woff) format('woff')}@font-face{font-family:Anonymous Pro;src:local('Anonymous Pro'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/400.woff) format('woff')}@font-face{font-family:Anonymous Pro;font-style:italic;font-weight:400i;src:local('Anonymous Pro Italic'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/400i.woff) format('woff')}@font-face{font-family:Anonymous Pro;font-weight:700;src:local('Anonymous Pro Bold'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/700.woff) format('woff')}@font-face{font-family:Anonymous Pro;font-style:italic;font-weight:700i;src:local('Anonymous Pro Bold Italic'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/700i.woff) format('woff')}@font-face{font-family:Open Sans;font-weight:300;src:local('Open Sans Light'),url(//brick.a.ssl.fastly.net/fonts/opensans/300.woff) format('woff')}@font-face{font-family:Open Sans;font-style:italic;font-weight:300i;src:local('Open Sans Light Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/300i.woff) format('woff')}@font-face{font-family:Open Sans;src:local('Open Sans Regular'),url(//brick.a.ssl.fastly.net/fonts/opensans/400.woff) format('woff')}@font-face{font-family:Open Sans;font-style:italic;font-weight:400i;src:local('Open Sans Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/400i.woff) format('woff')}@font-face{font-family:Open Sans;font-weight:600;src:local('Open Sans Semibold'),url(//brick.a.ssl.fastly.net/fonts/opensans/600.woff) format('woff')}@font-face{font-family:Open Sans;font-style:italic;font-weight:600i;src:local('Open Sans Semibold Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/600i.woff) format('woff')}@font-face{font-family:Open Sans;font-weight:700;src:local('Open Sans Bold'),url(//brick.a.ssl.fastly.net/fonts/opensans/700.woff) format('woff')}@font-face{font-family:Open Sans;font-style:italic;font-weight:700i;src:local('Open Sans Bold Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/700i.woff) format('woff')}.hljs-comment{color:#3a5c78}.hljs-variable,.hljs-attribute,.hljs-tag,.hljs-regexp,.ruby .hljs-constant,.xml .hljs-tag .hljs-title,.xml .hljs-pi,.xml .hljs-doctype,.html .hljs-doctype,.css .hljs-id,.css .hljs-class,.css .hljs-pseudo{color:#c82829}.hljs-number,.hljs-preprocessor,.hljs-pragma,.hljs-built_in,.hljs-literal,.hljs-constant,.hljs-function .hljs-title{color:#fd3}.ruby .hljs-class .hljs-title,.css .hljs-rules .hljs-attribute{color:#eab700}.hljs-string,.hljs-value,.hljs-inheritance,.hljs-header,.ruby .hljs-symbol,.xml .hljs-cdata{color:#f66}.css .hljs-hexcolor{color:#3e999f}.hljs-function .keyword,.python .hljs-decorator,.python .hljs-title,.ruby .hljs-function .hljs-title,.ruby .hljs-title .hljs-keyword,.perl .hljs-sub,.javascript .hljs-title,.coffeescript .hljs-title{color:#52a0e0}.hljs-keyword,.javascript .hljs-function{color:#6abafb}.hljs{display:block;background:white;color:#4d4d4c;padding:.5em;font-family:Anonymous Pro,Inconsolata,Monaco,monospace}.coffeescript .javascript,.javascript .xml,.tex .hljs-formula,.xml .javascript,.xml .vbscript,.xml .css,.xml .hljs-cdata{opacity:.5}section.content{padding:25px;padding-top:15px;background-color:white}section.content>*:first-child{margin-top:0!important}section.content>*:last-child{margin-bottom:0!important}section.content a{color:#4183c4}section.content a.absent{color:#c00}section.content a.anchor{display:block;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0}section.content h1,section.content h2,section.content h3,section.content h4,section.content h5,section.content h6{line-height:1.7;margin:20px 0 10px;padding:0;font-weight:700;-webkit-font-smoothing:antialiased;cursor:text;position:relative}section.content h1 tt,section.content h1 code{font-size:inherit}section.content h2 tt,section.content h2 code{font-size:inherit}section.content h3 tt,section.content h3 code{font-size:inherit}section.content h4 tt,section.content h4 code{font-size:inherit}section.content h5 tt,section.content h5 code{font-size:inherit}section.content h6 tt,section.content h6 code{font-size:inherit}section.content h1{font-size:28px;color:black}section.content h2{font-size:24px;border-bottom:1px solid #eee;color:black}section.content h3{font-size:18px}section.content h4{font-size:16px}section.content h5{font-size:14px}section.content h6{color:#777;font-size:14px}section.content p,section.content blockquote,section.content ul,section.content ol,section.content dl,section.content table,section.content pre{margin:15px 0}section.content body>h2:first-child{margin-top:0;padding-top:0}section.content body>h1:first-child{margin-top:0;padding-top:0}section.content body>h1:first-child+h2{margin-top:0;padding-top:0}section.content body>h3:first-child,section.content body>h4:first-child,section.content body>h5:first-child,section.content body>h6:first-child{margin-top:0;padding-top:0}section.content a:first-child h1,section.content a:first-child h2,section.content a:first-child h3,section.content a:first-child h4,section.content a:first-child h5,section.content a:first-child h6{margin-top:0;padding-top:0}section.content h1 p,section.content h2 p,section.content h3 p,section.content h4 p,section.content h5 p,section.content h6 p{margin-top:0}section.content li p.first{display:inline-block}section.content ul,section.content ol{padding-left:30px}section.content ul :first-child,section.content ol :first-child{margin-top:0}section.content ul :last-child,section.content ol :last-child{margin-bottom:0}section.content ul p{margin:0}section.content ul ul{margin:0}section.content dl{padding:0}section.content dl dt{font-size:14px;font-weight:700;font-style:italic;padding:0;margin:15px 0 5px}section.content dl dt:first-child{padding:0}section.content dl dt>:first-child{margin-top:0}section.content dl dt>:last-child{margin-bottom:0}section.content dl dd{margin:0 0 15px;padding:0 15px}section.content dl dd>:first-child{margin-top:0}section.content dl dd>:last-child{margin-bottom:0}section.content blockquote{border-left:4px solid #ddd;padding:0 15px;color:#777}section.content blockquote p{font-size:inherit}section.content blockquote>:first-child{margin-top:0}section.content blockquote>:last-child{margin-bottom:0}section.content table{width:100%;padding:0}section.content table tr{border-top:1px solid #ccc;background-color:white;margin:0;padding:0}section.content table tr:nth-child(2n){background-color:#f8f8f8}section.content table tr th{font-weight:700;border:1px solid #ccc;margin:0;padding:6px 13px}section.content table tr td{border:1px solid #ccc;margin:0;padding:6px 13px}section.content table tr th :first-child,section.content table tr td :first-child{margin-top:0}section.content table tr th :last-child,section.content table tr td :last-child{margin-bottom:0}section.content img{max-width:100%;display:block;margin:0 auto}section.content span.frame{display:block;overflow:hidden}section.content span.frame>span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto}section.content span.frame span img{display:block;float:left}section.content span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}section.content span.align-center{display:block;overflow:hidden;clear:both}section.content span.align-center>span{display:block;overflow:hidden;margin:13px auto 0;text-align:center}section.content span.align-center span img{margin:0 auto;text-align:center}section.content span.align-right{display:block;overflow:hidden;clear:both}section.content span.align-right>span{display:block;overflow:hidden;margin:13px 0 0;text-align:right}section.content span.align-right span img{margin:0;text-align:right}section.content span.float-left{display:block;margin-right:13px;overflow:hidden;float:left}section.content span.float-left span{margin:13px 0 0}section.content span.float-right{display:block;margin-left:13px;overflow:hidden;float:right}section.content span.float-right>span{display:block;overflow:hidden;margin:13px auto 0;text-align:right}section.content code,section.content tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}section.content pre code{margin:0;padding:0;white-space:pre;border:none;background:transparent}section.content .highlight pre{color:#b8d0e0;background-color:#121b21;border:1px solid #121b21;font-size:16px;line-height:1.5em;overflow:auto;padding:20px;margin:0 -20px;border-radius:3px}section.content pre{color:#b8d0e0;background-color:#121b21;border:1px solid #121b21;font-size:16px;line-height:1.5em;overflow:auto;padding:20px;margin:0 -20px;border-radius:3px}section.content pre code,section.content pre tt{background-color:transparent;border:none}*{-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:none;-webkit-touch-callout:none;-webkit-font-smoothing:antialiased}html,body{height:100%}body{text-rendering:optimizeLegibility;font-smoothing:antialiased;font-family:Merriweather,EB Garamond,Georgia,serif}img{max-width:100%!important}.page-break{display:none}@media screen{body{margin:1em}}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}.page-break{display:block;page-break-before:always}h1,h2{page-break-after:avoid;page-break-before:auto}pre,blockquote{border:1px solid #999;page-break-inside:avoid}img{page-break-inside:avoid}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}}
\ No newline at end of file
diff --git a/themes/daux_singlepage/less/book/markdown.less b/themes/daux_singlepage/less/book/markdown.less
new file mode 100755
index 0000000..8bf515d
--- /dev/null
+++ b/themes/daux_singlepage/less/book/markdown.less
@@ -0,0 +1,303 @@
+section.content {
+ padding: 25px;
+ padding-top: 15px;
+ background-color: white;
+
+
+ & > *:first-child {
+ margin-top: 0 !important; }
+ & > *:last-child {
+ margin-bottom: 0 !important; }
+
+ a {
+ color: #4183C4; }
+ a.absent {
+ color: #cc0000; }
+ a.anchor {
+ display: block;
+ padding-left: 30px;
+ margin-left: -30px;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0; }
+
+ h1, h2, h3, h4, h5, h6 {
+ line-height: 1.7;
+ margin: 20px 0 10px;
+ padding: 0;
+ font-weight: bold;
+ -webkit-font-smoothing: antialiased;
+ cursor: text;
+ position: relative; }
+
+ h1 tt, h1 code {
+ font-size: inherit; }
+
+ h2 tt, h2 code {
+ font-size: inherit; }
+
+ h3 tt, h3 code {
+ font-size: inherit; }
+
+ h4 tt, h4 code {
+ font-size: inherit; }
+
+ h5 tt, h5 code {
+ font-size: inherit; }
+
+ h6 tt, h6 code {
+ font-size: inherit; }
+
+ h1 {
+ font-size: 28px;
+ color: black; }
+
+ h2 {
+ font-size: 24px;
+ border-bottom: 1px solid #eee;
+ color: black; }
+
+ h3 {
+ font-size: 18px; }
+
+ h4 {
+ font-size: 16px; }
+
+ h5 {
+ font-size: 14px; }
+
+ h6 {
+ color: #777777;
+ font-size: 14px; }
+
+ p, blockquote, ul, ol, dl, table, pre {
+ margin: 15px 0; }
+
+ hr {
+
+ }
+
+ body > h2:first-child {
+ margin-top: 0;
+ padding-top: 0; }
+ body > h1:first-child {
+ margin-top: 0;
+ padding-top: 0; }
+ body > h1:first-child + h2 {
+ margin-top: 0;
+ padding-top: 0; }
+ body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
+ margin-top: 0;
+ padding-top: 0; }
+
+ a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
+ margin-top: 0;
+ padding-top: 0; }
+
+ h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
+ margin-top: 0; }
+
+ li p.first {
+ display: inline-block; }
+
+ ul, ol {
+ padding-left: 30px; }
+
+ ul :first-child, ol :first-child {
+ margin-top: 0; }
+
+ ul :last-child, ol :last-child {
+ margin-bottom: 0; }
+
+ ul p {
+ margin: 0px;
+ }
+ ul ul {
+ margin: 0px;
+ }
+
+ dl {
+ padding: 0; }
+ dl dt {
+ font-size: 14px;
+ font-weight: bold;
+ font-style: italic;
+ padding: 0;
+ margin: 15px 0 5px; }
+ dl dt:first-child {
+ padding: 0; }
+ dl dt > :first-child {
+ margin-top: 0; }
+ dl dt > :last-child {
+ margin-bottom: 0; }
+ dl dd {
+ margin: 0 0 15px;
+ padding: 0 15px; }
+ dl dd > :first-child {
+ margin-top: 0; }
+ dl dd > :last-child {
+ margin-bottom: 0; }
+
+ blockquote {
+ border-left: 4px solid #dddddd;
+ padding: 0 15px;
+ color: #777777;
+
+ p {
+ font-size: inherit;
+ }
+ }
+ blockquote > :first-child {
+ margin-top: 0;
+ }
+ blockquote > :last-child {
+ margin-bottom: 0; }
+
+ table {
+ width: 100%;
+ padding: 0;
+ }
+
+ table tr {
+ border-top: 1px solid #cccccc;
+ background-color: white;
+ margin: 0;
+ padding: 0; }
+ table tr:nth-child(2n) {
+ background-color: #f8f8f8; }
+ table tr th {
+ font-weight: bold;
+ border: 1px solid #cccccc;
+ margin: 0;
+ padding: 6px 13px; }
+ table tr td {
+ border: 1px solid #cccccc;
+ margin: 0;
+ padding: 6px 13px; }
+ table tr th :first-child, table tr td :first-child {
+ margin-top: 0; }
+ table tr th :last-child, table tr td :last-child {
+ margin-bottom: 0; }
+
+ img {
+ max-width: 100%;
+ display: block;
+ margin: 0px auto;
+ }
+
+ span.frame {
+ display: block;
+ overflow: hidden; }
+ span.frame > span {
+ border: 1px solid #dddddd;
+ display: block;
+ float: left;
+ overflow: hidden;
+ margin: 13px 0 0;
+ padding: 7px;
+ width: auto; }
+ span.frame span img {
+ display: block;
+ float: left; }
+ span.frame span span {
+ clear: both;
+ color: #333333;
+ display: block;
+ padding: 5px 0 0; }
+ span.align-center {
+ display: block;
+ overflow: hidden;
+ clear: both; }
+ span.align-center > span {
+ display: block;
+ overflow: hidden;
+ margin: 13px auto 0;
+ text-align: center; }
+ span.align-center span img {
+ margin: 0 auto;
+ text-align: center; }
+ span.align-right {
+ display: block;
+ overflow: hidden;
+ clear: both; }
+ span.align-right > span {
+ display: block;
+ overflow: hidden;
+ margin: 13px 0 0;
+ text-align: right; }
+ span.align-right span img {
+ margin: 0;
+ text-align: right; }
+ span.float-left {
+ display: block;
+ margin-right: 13px;
+ overflow: hidden;
+ float: left;
+
+ & span {
+ margin: 13px 0 0;
+ }
+ }
+
+ span.float-right {
+ display: block;
+ margin-left: 13px;
+ overflow: hidden;
+ float: right;
+
+ & > span {
+ display: block;
+ overflow: hidden;
+ margin: 13px auto 0;
+ text-align: right;
+ }
+ }
+
+ code, tt {
+ margin: 0 2px;
+ padding: 0 5px;
+ white-space: nowrap;
+ border: 1px solid #eaeaea;
+ background-color: #f8f8f8;
+ border-radius: 3px;
+ }
+
+ pre code {
+ margin: 0;
+ padding: 0;
+ white-space: pre;
+ border: none;
+ background: transparent;
+ }
+
+ .highlight pre {
+ color: hsl(204, 40%, 80%);
+ background-color: hsl(204, 30%, 10%);
+ border: 1px solid hsl(204, 30%, 10%);
+ font-size: 16px;
+ line-height: 1.5em;
+ overflow: auto;
+ padding: 20px;
+ margin: 0 -20px;
+ border-radius: 3px;
+ }
+
+ pre {
+ color: hsl(204, 40%, 80%);
+ background-color: hsl(204, 30%, 10%);
+ border: 1px solid hsl(204, 30%, 10%);
+ font-size: 16px;
+ line-height: 1.5em;
+ overflow: auto;
+ padding: 20px;
+ margin: 0 -20px;
+ border-radius: 3px;
+ }
+
+ pre code, pre tt {
+ background-color: transparent;
+ border: none;
+ }
+}
diff --git a/themes/daux_singlepage/less/fonts.less b/themes/daux_singlepage/less/fonts.less
new file mode 100755
index 0000000..762ad81
--- /dev/null
+++ b/themes/daux_singlepage/less/fonts.less
@@ -0,0 +1,144 @@
+@font-face {
+ font-family: 'EB Garamond';
+ font-style: normal;
+ font-weight: 400;
+ src: local('EB Garamond 12 Regular'),url(//brick.a.ssl.fastly.net/fonts/ebgaramond/400.woff) format('woff');
+}
+@font-face {
+ font-family: 'EB Garamond';
+ font-style: italic;
+ font-weight: 400i;
+ src: local('EB Garamond 12 Italic'),url(//brick.a.ssl.fastly.net/fonts/ebgaramond/400i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: normal;
+ font-weight: 250;
+ src: local('Merriweather Light'),url(//brick.a.ssl.fastly.net/fonts/merriweather/250.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: italic;
+ font-weight: 250i;
+ src: local('Merriweather Light Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/250i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Merriweather'),url(//brick.a.ssl.fastly.net/fonts/merriweather/400.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: italic;
+ font-weight: 400i;
+ src: local('Merriweather Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/400i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: normal;
+ font-weight: 600;
+ src: local(''),url(//brick.a.ssl.fastly.net/fonts/merriweather/600.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: italic;
+ font-weight: 600i;
+ src: local(''),url(//brick.a.ssl.fastly.net/fonts/merriweather/600i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Merriweather Bold'),url(//brick.a.ssl.fastly.net/fonts/merriweather/700.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: italic;
+ font-weight: 700i;
+ src: local('Merriweather Bold Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/700i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: normal;
+ font-weight: 900;
+ src: local('Merriweather Heavy'),url(//brick.a.ssl.fastly.net/fonts/merriweather/900.woff) format('woff');
+}
+@font-face {
+ font-family: 'Merriweather';
+ font-style: italic;
+ font-weight: 900i;
+ src: local('Merriweather Heavy Italic'),url(//brick.a.ssl.fastly.net/fonts/merriweather/900i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Anonymous Pro';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Anonymous Pro'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/400.woff) format('woff');
+}
+@font-face {
+ font-family: 'Anonymous Pro';
+ font-style: italic;
+ font-weight: 400i;
+ src: local('Anonymous Pro Italic'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/400i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Anonymous Pro';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Anonymous Pro Bold'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/700.woff) format('woff');
+}
+@font-face {
+ font-family: 'Anonymous Pro';
+ font-style: italic;
+ font-weight: 700i;
+ src: local('Anonymous Pro Bold Italic'),url(//brick.a.ssl.fastly.net/fonts/anonymouspro/700i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: local('Open Sans Light'),url(//brick.a.ssl.fastly.net/fonts/opensans/300.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 300i;
+ src: local('Open Sans Light Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/300i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Open Sans Regular'),url(//brick.a.ssl.fastly.net/fonts/opensans/400.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 400i;
+ src: local('Open Sans Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/400i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: local('Open Sans Semibold'),url(//brick.a.ssl.fastly.net/fonts/opensans/600.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 600i;
+ src: local('Open Sans Semibold Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/600i.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Open Sans Bold'),url(//brick.a.ssl.fastly.net/fonts/opensans/700.woff) format('woff');
+}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 700i;
+ src: local('Open Sans Bold Italic'),url(//brick.a.ssl.fastly.net/fonts/opensans/700i.woff) format('woff');
+}
\ No newline at end of file
diff --git a/themes/daux_singlepage/less/highlight.less b/themes/daux_singlepage/less/highlight.less
new file mode 100755
index 0000000..33e0040
--- /dev/null
+++ b/themes/daux_singlepage/less/highlight.less
@@ -0,0 +1,90 @@
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+
+/* Tomorrow Comment */
+.hljs-comment {
+ color: hsl(207, 35%, 35%);
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-attribute,
+.hljs-tag,
+.hljs-regexp,
+.ruby .hljs-constant,
+.xml .hljs-tag .hljs-title,
+.xml .hljs-pi,
+.xml .hljs-doctype,
+.html .hljs-doctype,
+.css .hljs-id,
+.css .hljs-class,
+.css .hljs-pseudo {
+ color: #c82829;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-preprocessor,
+.hljs-pragma,
+.hljs-built_in,
+.hljs-literal,
+.hljs-constant,
+.hljs-function .hljs-title {
+ color: hsl(50, 100%, 60%);
+}
+
+/* Tomorrow Yellow */
+.ruby .hljs-class .hljs-title,
+.css .hljs-rules .hljs-attribute {
+ color: #eab700;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-value,
+.hljs-inheritance,
+.hljs-header,
+.ruby .hljs-symbol,
+.xml .hljs-cdata {
+ color: hsl(0, 100%, 70%);
+}
+
+/* Tomorrow Aqua */
+.css .hljs-hexcolor {
+ color: #3e999f;
+}
+
+/* Tomorrow Blue */
+.hljs-function .keyword,
+.python .hljs-decorator,
+.python .hljs-title,
+.ruby .hljs-function .hljs-title,
+.ruby .hljs-title .hljs-keyword,
+.perl .hljs-sub,
+.javascript .hljs-title,
+.coffeescript .hljs-title {
+ color: hsl(207, 70%, 60%);
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.javascript .hljs-function {
+ color: hsl(207, 95%, 70%);
+}
+
+.hljs {
+ display: block;
+ background: white;
+ color: #4d4d4c;
+ padding: 0.5em;
+ font-family: "Anonymous Pro", "Inconsolata", "Monaco", monospace;
+}
+
+.coffeescript .javascript,
+.javascript .xml,
+.tex .hljs-formula,
+.xml .javascript,
+.xml .vbscript,
+.xml .css,
+.xml .hljs-cdata {
+ opacity: 0.5;
+}
\ No newline at end of file
diff --git a/themes/daux_singlepage/less/main.less b/themes/daux_singlepage/less/main.less
new file mode 100755
index 0000000..2b672a4
--- /dev/null
+++ b/themes/daux_singlepage/less/main.less
@@ -0,0 +1,47 @@
+// Core variables and mixins
+@import "vendors/bootstrap/variables.less";
+@import "vendors/bootstrap/normalize.less";
+@import "vendors/bootstrap/scaffolding.less";
+@import "vendors/bootstrap/type.less";
+
+@import "variables.less";
+@import "fonts.less";
+
+@import "highlight.less";
+
+@import "book/markdown.less";
+
+* {
+ -webkit-overflow-scrolling: touch;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-text-size-adjust: none;
+ -webkit-touch-callout: none;
+ -webkit-font-smoothing: antialiased;
+}
+
+html, body {
+ height: 100%;
+}
+
+body {
+ text-rendering: optimizeLegibility;
+ font-smoothing: antialiased;
+ font-family: @font-family-base;
+}
+
+img {
+ max-width: 100% !important;
+}
+
+.page-break { display: none; }
+
+
+@media screen {
+ body {
+ margin:1em;
+ }
+}
+
+@media print {
+ @import "print.less";
+}
diff --git a/themes/daux_singlepage/less/print.less b/themes/daux_singlepage/less/print.less
new file mode 100755
index 0000000..423fc1e
--- /dev/null
+++ b/themes/daux_singlepage/less/print.less
@@ -0,0 +1,36 @@
+
+* {
+ text-shadow: none !important;
+ color: #000 !important; // Black prints faster: h5bp.com/s
+ background: transparent !important;
+ box-shadow: none !important;
+}
+
+.page-break { display:block; page-break-before:always; }
+
+h1, h2 {
+ page-break-after:avoid;
+ page-break-before:auto;
+}
+
+pre, blockquote {
+ border:1px solid #999;
+ page-break-inside:avoid;
+}
+
+img {
+ page-break-inside:avoid;
+}
+
+a,
+a:visited {
+ text-decoration: underline;
+}
+
+a[href]:after {
+ content: " (" attr(href) ")";
+}
+
+abbr[title]:after {
+ content: " (" attr(title) ")";
+}
diff --git a/themes/daux_singlepage/less/variables.less b/themes/daux_singlepage/less/variables.less
new file mode 100755
index 0000000..6d186d7
--- /dev/null
+++ b/themes/daux_singlepage/less/variables.less
@@ -0,0 +1,85 @@
+
+@staticPath: "./";
+
+// Sizes
+@mobileMaxWidth: 1240px;
+
+// Header
+@header-height: 50px;
+@header-color: hsl(194, 5%, 52%);
+@header-background: white;
+@header-button-color: hsl(194, 5%, 52%);
+@header-button-hover-color: #151515;
+@header-button-hover-background: hsl(207, 15%, 95%);
+
+// Body
+@body-background: white;
+@body-pagination-background: hsl(207, 15%, 95%);
+
+// Sidebar
+@sidebar-width: 250px;
+@sidebar-color: hsl(207, 15%, 80%);
+@sidebar-background: hsl(207, 15%, 95%);
+
+@sidebar-nested-padding: 10px;
+
+@sidebar-search-padding: 6px;
+@sidebar-search-background: hsl(207, 15%, 80%);
+@sidebar-search-border-color: hsl(207, 15%, 80%);
+
+@sidebar-divider-color: hsl(207, 15%, 85%);
+
+@sidebar-link-color: hsl(207, 15%, 50%);
+@sidebar-link-background: transparent;
+@sidebar-link-hover-color: hsl(207, 100%, 50%);
+@sidebar-link-hover-background: transparent;
+
+@sidebar-icon-color: @bar-progress-background;
+@sidebar-link-completed: hsl(207, 15%, 25%);
+@sidebar-link-completed-weight: normal;
+
+// Page
+@page-background: white;
+
+// Progress Bar
+@chapter-display: none;
+@chapter-size: 16px;
+
+@progress-height: 0px;
+
+@bar-height: 2px;
+@bar-left: @sidebar-width;
+@bar-right: 0;
+@bar-top: 50px;
+@bar-position: fixed;
+@bar-background: white;
+@bar-progress-background: hsl(120, 60%, 50%);
+
+// Basics of a navbar
+@navbar-height: 50px;
+@navbar-margin-bottom: @line-height-computed;
+@navbar-default-border: #d5d5d5;
+@navbar-border-radius: 0px;
+@navbar-padding-horizontal: floor(@grid-gutter-width / 2);
+@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
+
+// Navbar brand label
+@navbar-default-color: #333;
+@navbar-default-link-color: #333;
+@navbar-default-brand-color: @navbar-default-link-color;
+@navbar-default-brand-hover-color: @navbar-default-link-color;
+@navbar-default-brand-hover-bg: transparent;
+
+// Border Radius
+@border-radius-base: 1px;
+@border-radius-large: 3px;
+@border-radius-small: 1px;
+
+// Fonts
+@font-family-serif: Merriweather, "EB Garamond", Georgia, serif;
+@font-family-sans: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-family-base: @font-family-serif;
+
+@FontPath: '@{staticPath}/gitbook/fonts';
+@fa-font-path: "@{FontPath}/fontawesome";
+
diff --git a/themes/daux_singlepage/less/vendors/bootstrap/normalize.less b/themes/daux_singlepage/less/vendors/bootstrap/normalize.less
new file mode 100755
index 0000000..a2e9c64
--- /dev/null
+++ b/themes/daux_singlepage/less/vendors/bootstrap/normalize.less
@@ -0,0 +1,396 @@
+/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
+
+// ==========================================================================
+// HTML5 display definitions
+// ==========================================================================
+
+//
+// Correct `block` display not defined in IE 8/9.
+//
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+//
+// Correct `inline-block` display not defined in IE 8/9.
+//
+
+audio,
+canvas,
+video {
+ display: inline-block;
+}
+
+//
+// Prevent modern browsers from displaying `audio` without controls.
+// Remove excess height in iOS 5 devices.
+//
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+//
+// Address styling not present in IE 8/9.
+//
+
+[hidden] {
+ display: none;
+}
+
+// ==========================================================================
+// Base
+// ==========================================================================
+
+//
+// 1. Set default font family to sans-serif.
+// 2. Prevent iOS text size adjust after orientation change, without disabling
+// user zoom.
+//
+
+html {
+ font-family: sans-serif; // 1
+ -webkit-text-size-adjust: 100%; // 2
+ -ms-text-size-adjust: 100%; // 2
+}
+
+//
+// Remove default margin.
+//
+
+body {
+ margin: 0;
+}
+
+// ==========================================================================
+// Links
+// ==========================================================================
+
+//
+// Address `outline` inconsistency between Chrome and other browsers.
+//
+
+a:focus {
+ outline: thin dotted;
+}
+
+//
+// Improve readability when focused and also mouse hovered in all browsers.
+//
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+// ==========================================================================
+// Typography
+// ==========================================================================
+
+//
+// Address variable `h1` font-size and margin within `section` and `article`
+// contexts in Firefox 4+, Safari 5, and Chrome.
+//
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+//
+// Address styling not present in IE 8/9, Safari 5, and Chrome.
+//
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+//
+// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
+//
+
+b,
+strong {
+ font-weight: bold;
+}
+
+//
+// Address styling not present in Safari 5 and Chrome.
+//
+
+dfn {
+ font-style: italic;
+}
+
+//
+// Address differences between Firefox and other browsers.
+//
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+//
+// Address styling not present in IE 8/9.
+//
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+//
+// Correct font family set oddly in Safari 5 and Chrome.
+//
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, serif;
+ font-size: 1em;
+}
+
+//
+// Improve readability of pre-formatted text in all browsers.
+//
+
+pre {
+ white-space: pre-wrap;
+}
+
+//
+// Set consistent quote types.
+//
+
+q {
+ quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+//
+// 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.
+//
+
+img {
+ border: 0;
+}
+
+//
+// Correct overflow displayed oddly in IE 9.
+//
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+// ==========================================================================
+// Figures
+// ==========================================================================
+
+//
+// Address margin not present in IE 8/9 and Safari 5.
+//
+
+figure {
+ margin: 0;
+}
+
+// ==========================================================================
+// Forms
+// ==========================================================================
+
+//
+// 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.
+// 2. Remove padding so people aren't caught out if they zero out fieldsets.
+//
+
+legend {
+ border: 0; // 1
+ padding: 0; // 2
+}
+
+//
+// 1. Correct font family not being inherited in all browsers.
+// 2. Correct font size not being inherited in all browsers.
+// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
+//
+
+button,
+input,
+select,
+textarea {
+ font-family: inherit; // 1
+ font-size: 100%; // 2
+ margin: 0; // 3
+}
+
+//
+// Address Firefox 4+ setting `line-height` on `input` using `!important` in
+// the UA stylesheet.
+//
+
+button,
+input {
+ line-height: normal;
+}
+
+//
+// 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 Chrome, Safari 5+, and IE 8+.
+// Correct `select` style inheritance in Firefox 4+ and Opera.
+//
+
+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;
+}
+
+//
+// 1. Address box sizing set to `content-box` in IE 8/9.
+// 2. Remove excess padding in IE 8/9.
+//
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; // 1
+ padding: 0; // 2
+}
+
+//
+// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+// (include `-moz` to future-proof).
+//
+
+input[type="search"] {
+ -webkit-appearance: textfield; // 1
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; // 2
+ box-sizing: content-box;
+}
+
+//
+// Remove inner padding and search cancel button in Safari 5 and Chrome
+// on OS X.
+//
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+//
+// Remove inner padding and border in Firefox 4+.
+//
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+//
+// 1. Remove default vertical scrollbar in IE 8/9.
+// 2. Improve readability and alignment in all browsers.
+//
+
+textarea {
+ overflow: auto; // 1
+ vertical-align: top; // 2
+}
+
+// ==========================================================================
+// Tables
+// ==========================================================================
+
+//
+// Remove most spacing between table cells.
+//
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
diff --git a/themes/daux_singlepage/less/vendors/bootstrap/scaffolding.less b/themes/daux_singlepage/less/vendors/bootstrap/scaffolding.less
new file mode 100755
index 0000000..aec1023
--- /dev/null
+++ b/themes/daux_singlepage/less/vendors/bootstrap/scaffolding.less
@@ -0,0 +1,105 @@
+//
+// Scaffolding
+// --------------------------------------------------
+
+
+// Reset the box-sizing
+
+*,
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+
+// Body reset
+
+html {
+ font-size: 62.5%;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+}
+
+body {
+ font-family: @font-family-base;
+ font-size: @font-size-base;
+ line-height: @line-height-base;
+ color: @text-color;
+ background-color: @body-bg;
+}
+
+// Reset fonts for relevant elements
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+// Reset unusual Firefox-on-Android default style.
+//
+// See https://github.com/necolas/normalize.css/issues/214
+
+button,
+input,
+select[multiple],
+textarea {
+ background-image: none;
+}
+
+
+// Links
+
+a {
+ color: @link-color;
+ text-decoration: none;
+
+ &:hover,
+ &:focus {
+ color: @link-hover-color;
+ text-decoration: underline;
+ }
+
+ &:focus {
+ // Default
+ outline: thin dotted #333;
+ // Webkit
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+ }
+}
+
+
+// Images
+
+img {
+ vertical-align: middle;
+}
+
+// Horizontal rules
+
+hr {
+ margin-top: @line-height-computed;
+ margin-bottom: @line-height-computed;
+ border: 0;
+ border-top: 1px solid @hr-border;
+}
+
+
+// Only display content to screen readers
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0 0 0 0);
+ border: 0;
+}
diff --git a/themes/daux_singlepage/less/vendors/bootstrap/type.less b/themes/daux_singlepage/less/vendors/bootstrap/type.less
new file mode 100755
index 0000000..624be8a
--- /dev/null
+++ b/themes/daux_singlepage/less/vendors/bootstrap/type.less
@@ -0,0 +1,247 @@
+//
+// Typography
+// --------------------------------------------------
+
+
+// Body text
+// -------------------------
+
+p {
+ margin: 0 0 (@line-height-computed / 2);
+}
+.lead {
+ margin-bottom: @line-height-computed;
+ font-size: (@font-size-base * 1.15);
+ font-weight: 200;
+ line-height: 1.4;
+
+ @media (min-width: 768px) {
+ font-size: (@font-size-base * 1.5);
+ }
+}
+
+
+// Emphasis & misc
+// -------------------------
+
+// Ex: 14px base font * 85% = about 12px
+small { font-size: 85%; }
+
+// Undo browser default styling
+cite { font-style: normal; }
+
+// Contextual emphasis
+.text-muted { color: @text-muted; }
+.text-primary { color: @brand-primary; }
+.text-warning { color: @state-warning-text; }
+.text-danger { color: @state-danger-text; }
+.text-success { color: @state-success-text; }
+.text-info { color: @state-info-text; }
+
+// Alignment
+.text-left { text-align: left; }
+.text-right { text-align: right; }
+.text-center { text-align: center; }
+
+
+// Headings
+// -------------------------
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+ font-family: @headings-font-family;
+ font-weight: @headings-font-weight;
+ line-height: @headings-line-height;
+ small {
+ font-weight: normal;
+ line-height: 1;
+ color: @headings-small-color;
+ }
+}
+
+h1,
+h2,
+h3 {
+ margin-top: @line-height-computed;
+ margin-bottom: (@line-height-computed / 2);
+}
+h4,
+h5,
+h6 {
+ margin-top: (@line-height-computed / 2);
+ margin-bottom: (@line-height-computed / 2);
+}
+
+h1, .h1 { font-size: floor(@font-size-base * 2.60); } // ~36px
+h2, .h2 { font-size: floor(@font-size-base * 2.15); } // ~30px
+h3, .h3 { font-size: ceil(@font-size-base * 1.70); } // ~24px
+h4, .h4 { font-size: ceil(@font-size-base * 1.25); } // ~18px
+h5, .h5 { font-size: @font-size-base; }
+h6, .h6 { font-size: ceil(@font-size-base * 0.85); } // ~12px
+
+h1 small, .h1 small { font-size: ceil(@font-size-base * 1.70); } // ~24px
+h2 small, .h2 small { font-size: ceil(@font-size-base * 1.25); } // ~18px
+h3 small, .h3 small,
+h4 small, .h4 small { font-size: @font-size-base; }
+
+
+// Page header
+// -------------------------
+
+.page-header {
+ padding-bottom: ((@line-height-computed / 2) - 1);
+ margin: (@line-height-computed * 2) 0 @line-height-computed;
+ border-bottom: 1px solid @page-header-border-color;
+}
+
+
+
+// Lists
+// --------------------------------------------------
+
+// Unordered and Ordered lists
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: (@line-height-computed / 2);
+ ul,
+ ol{
+ margin-bottom: 0;
+ }
+}
+
+// List options
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+// Inline turns list items into inline-block
+.list-inline {
+ .list-unstyled();
+ > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+}
+
+// Description Lists
+dl {
+ margin-bottom: @line-height-computed;
+}
+dt,
+dd {
+ line-height: @line-height-base;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0; // Undo browser default
+}
+
+// Horizontal description lists
+//
+// Defaults to being stacked without any of the below styles applied, until the
+// grid breakpoint is reached (default of ~768px).
+
+@media (min-width: @grid-float-breakpoint) {
+ .dl-horizontal {
+ dt {
+ float: left;
+ width: (@component-offset-horizontal - 20);
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ dd {
+ margin-left: @component-offset-horizontal;
+ &:before,
+ &:after {
+ content: " "; /* 1 */
+ display: table; /* 2 */
+ }
+ &:after {
+ clear: both;
+ }
+ }
+ }
+}
+
+// MISC
+// ----
+
+// Abbreviations and acronyms
+abbr[title],
+// Added data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted @abbr-border-color;
+}
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+// Blockquotes
+blockquote {
+ padding: (@line-height-computed / 2) @line-height-computed;
+ margin: 0 0 @line-height-computed;
+ border-left: 5px solid @blockquote-border-color;
+ p {
+ font-size: (@font-size-base * 1.25);
+ font-weight: 300;
+ line-height: 1.25;
+ }
+ p:last-child {
+ margin-bottom: 0;
+ }
+ small {
+ display: block;
+ line-height: @line-height-base;
+ color: @blockquote-small-color;
+ &:before {
+ content: '\2014 \00A0';// EM DASH, NBSP
+ }
+ }
+
+ // Float right with text-align: right
+ &.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid @blockquote-border-color;
+ border-left: 0;
+ p,
+ small {
+ text-align: right;
+ }
+ small {
+ &:before {
+ content: '';
+ }
+ &:after {
+ content: '\00A0 \2014';// NBSP, EM DASH
+ }
+ }
+ }
+}
+
+// Quotes
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+
+// Addresses
+address {
+ display: block;
+ margin-bottom: @line-height-computed;
+ font-style: normal;
+ line-height: @line-height-base;
+}
diff --git a/themes/daux_singlepage/less/vendors/bootstrap/variables.less b/themes/daux_singlepage/less/vendors/bootstrap/variables.less
new file mode 100755
index 0000000..fa623e2
--- /dev/null
+++ b/themes/daux_singlepage/less/vendors/bootstrap/variables.less
@@ -0,0 +1,620 @@
+//
+// Variables
+// --------------------------------------------------
+
+
+// Global values
+// --------------------------------------------------
+
+// Grays
+// -------------------------
+
+@gray-darker: lighten(#000, 13.5%); // #222
+@gray-dark: lighten(#000, 20%); // #333
+@gray: lighten(#000, 33.5%); // #555
+@gray-light: lighten(#000, 60%); // #999
+@gray-lighter: lighten(#000, 93.5%); // #eee
+
+// Brand colors
+// -------------------------
+
+@brand-primary: #428bca;
+@brand-success: #5cb85c;
+@brand-warning: #f0ad4e;
+@brand-danger: #d9534f;
+@brand-info: #5bc0de;
+
+// Scaffolding
+// -------------------------
+
+@body-bg: #fff;
+@text-color: @gray-dark;
+
+// Links
+// -------------------------
+
+@link-color: @brand-primary;
+@link-hover-color: darken(@link-color, 15%);
+
+// Typography
+// -------------------------
+
+@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-family-serif: Georgia, "Times New Roman", Times, serif;
+@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
+@font-family-base: @font-family-sans-serif;
+
+@font-size-base: 14px;
+@font-size-large: ceil(@font-size-base * 1.25); // ~18px
+@font-size-small: ceil(@font-size-base * 0.85); // ~12px
+
+@line-height-base: 1.428571429; // 20/14
+@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px
+
+@headings-font-family: @font-family-base;
+@headings-font-weight: 500;
+@headings-line-height: 1.1;
+
+// Iconography
+// -------------------------
+
+@icon-font-path: "../fonts/";
+@icon-font-name: "glyphicons-halflings-regular";
+
+
+// Components
+// -------------------------
+// Based on 14px font-size and 1.428 line-height (~20px to start)
+
+@padding-base-vertical: 6px;
+@padding-base-horizontal: 12px;
+
+@padding-large-vertical: 10px;
+@padding-large-horizontal: 16px;
+
+@padding-small-vertical: 5px;
+@padding-small-horizontal: 10px;
+
+@line-height-large: 1.33;
+@line-height-small: 1.5;
+
+@border-radius-base: 4px;
+@border-radius-large: 6px;
+@border-radius-small: 3px;
+
+@component-active-bg: @brand-primary;
+
+@caret-width-base: 4px;
+@caret-width-large: 5px;
+
+// Tables
+// -------------------------
+
+@table-cell-padding: 8px;
+@table-condensed-cell-padding: 5px;
+
+@table-bg: transparent; // overall background-color
+@table-bg-accent: #f9f9f9; // for striping
+@table-bg-hover: #f5f5f5;
+@table-bg-active: @table-bg-hover;
+
+@table-border-color: #ddd; // table and cell border
+
+
+// Buttons
+// -------------------------
+
+@btn-font-weight: normal;
+
+@btn-default-color: #333;
+@btn-default-bg: #fff;
+@btn-default-border: #ccc;
+
+@btn-primary-color: #fff;
+@btn-primary-bg: @brand-primary;
+@btn-primary-border: darken(@btn-primary-bg, 5%);
+
+@btn-success-color: #fff;
+@btn-success-bg: @brand-success;
+@btn-success-border: darken(@btn-success-bg, 5%);
+
+@btn-warning-color: #fff;
+@btn-warning-bg: @brand-warning;
+@btn-warning-border: darken(@btn-warning-bg, 5%);
+
+@btn-danger-color: #fff;
+@btn-danger-bg: @brand-danger;
+@btn-danger-border: darken(@btn-danger-bg, 5%);
+
+@btn-info-color: #fff;
+@btn-info-bg: @brand-info;
+@btn-info-border: darken(@btn-info-bg, 5%);
+
+@btn-link-disabled-color: @gray-light;
+
+
+// Forms
+// -------------------------
+
+@input-bg: #fff;
+@input-bg-disabled: @gray-lighter;
+
+@input-color: @gray;
+@input-border: #ccc;
+@input-border-radius: @border-radius-base;
+@input-border-focus: #66afe9;
+
+@input-color-placeholder: @gray-light;
+
+@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
+@input-height-large: (floor(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
+@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
+
+@legend-color: @gray-dark;
+@legend-border-color: #e5e5e5;
+
+@input-group-addon-bg: @gray-lighter;
+@input-group-addon-border-color: @input-border;
+
+
+// Dropdowns
+// -------------------------
+
+@dropdown-bg: #fff;
+@dropdown-border: rgba(0,0,0,.15);
+@dropdown-fallback-border: #ccc;
+@dropdown-divider-bg: #e5e5e5;
+
+@dropdown-link-active-color: #fff;
+@dropdown-link-active-bg: @component-active-bg;
+
+@dropdown-link-color: @gray-dark;
+@dropdown-link-hover-color: #fff;
+@dropdown-link-hover-bg: @dropdown-link-active-bg;
+
+@dropdown-link-disabled-color: @gray-light;
+
+@dropdown-header-color: @gray-light;
+
+@dropdown-caret-color: #000;
+
+
+// COMPONENT VARIABLES
+// --------------------------------------------------
+
+
+// Z-index master list
+// -------------------------
+// Used for a bird's eye view of components dependent on the z-axis
+// Try to avoid customizing these :)
+
+@zindex-navbar: 1000;
+@zindex-dropdown: 1000;
+@zindex-popover: 1010;
+@zindex-tooltip: 1030;
+@zindex-navbar-fixed: 1030;
+@zindex-modal-background: 1040;
+@zindex-modal: 1050;
+
+// Media queries breakpoints
+// --------------------------------------------------
+
+// Extra small screen / phone
+@screen-xs: 480px;
+@screen-phone: @screen-xs;
+
+// Small screen / tablet
+@screen-sm: 768px;
+@screen-tablet: @screen-sm;
+
+// Medium screen / desktop
+@screen-md: 992px;
+@screen-desktop: @screen-md;
+
+// Large screen / wide desktop
+@screen-lg: 1200px;
+@screen-lg-desktop: @screen-lg;
+
+// So media queries don't overlap when required, provide a maximum
+@screen-xs-max: (@screen-sm - 1);
+@screen-sm-max: (@screen-md - 1);
+@screen-md-max: (@screen-lg - 1);
+
+
+// Grid system
+// --------------------------------------------------
+
+// Number of columns in the grid system
+@grid-columns: 12;
+// Padding, to be divided by two and applied to the left and right of all columns
+@grid-gutter-width: 30px;
+// Point at which the navbar stops collapsing
+@grid-float-breakpoint: @screen-tablet;
+
+
+// Navbar
+// -------------------------
+
+// Basics of a navbar
+@navbar-height: 50px;
+@navbar-margin-bottom: @line-height-computed;
+@navbar-default-color: #777;
+@navbar-default-bg: #f8f8f8;
+@navbar-default-border: darken(@navbar-default-bg, 6.5%);
+@navbar-border-radius: @border-radius-base;
+@navbar-padding-horizontal: floor(@grid-gutter-width / 2);
+@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
+
+// Navbar links
+@navbar-default-link-color: #777;
+@navbar-default-link-hover-color: #333;
+@navbar-default-link-hover-bg: transparent;
+@navbar-default-link-active-color: #555;
+@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
+@navbar-default-link-disabled-color: #ccc;
+@navbar-default-link-disabled-bg: transparent;
+
+// Navbar brand label
+@navbar-default-brand-color: @navbar-default-link-color;
+@navbar-default-brand-hover-color: darken(@navbar-default-link-color, 10%);
+@navbar-default-brand-hover-bg: transparent;
+
+// Navbar toggle
+@navbar-default-toggle-hover-bg: #ddd;
+@navbar-default-toggle-icon-bar-bg: #ccc;
+@navbar-default-toggle-border-color: #ddd;
+
+
+// Inverted navbar
+//
+// Reset inverted navbar basics
+@navbar-inverse-color: @gray-light;
+@navbar-inverse-bg: #222;
+@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
+
+// Inverted navbar links
+@navbar-inverse-link-color: @gray-light;
+@navbar-inverse-link-hover-color: #fff;
+@navbar-inverse-link-hover-bg: transparent;
+@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
+@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
+@navbar-inverse-link-disabled-color: #444;
+@navbar-inverse-link-disabled-bg: transparent;
+
+// Inverted navbar brand label
+@navbar-inverse-brand-color: @navbar-inverse-link-color;
+@navbar-inverse-brand-hover-color: #fff;
+@navbar-inverse-brand-hover-bg: transparent;
+
+// Inverted navbar search
+// Normal navbar needs no special styles or vars
+@navbar-inverse-search-bg: lighten(@navbar-inverse-bg, 25%);
+@navbar-inverse-search-bg-focus: #fff;
+@navbar-inverse-search-border: @navbar-inverse-bg;
+@navbar-inverse-search-placeholder-color: #ccc;
+
+// Inverted navbar toggle
+@navbar-inverse-toggle-hover-bg: #333;
+@navbar-inverse-toggle-icon-bar-bg: #fff;
+@navbar-inverse-toggle-border-color: #333;
+
+
+// Navs
+// -------------------------
+
+@nav-link-padding: 10px 15px;
+@nav-link-hover-bg: @gray-lighter;
+
+@nav-disabled-link-color: @gray-light;
+@nav-disabled-link-hover-color: @gray-light;
+
+@nav-open-link-hover-color: #fff;
+@nav-open-caret-border-color: #fff;
+
+// Tabs
+@nav-tabs-border-color: #ddd;
+
+@nav-tabs-link-hover-border-color: @gray-lighter;
+
+@nav-tabs-active-link-hover-bg: @body-bg;
+@nav-tabs-active-link-hover-color: @gray;
+@nav-tabs-active-link-hover-border-color: #ddd;
+
+@nav-tabs-justified-link-border-color: #ddd;
+@nav-tabs-justified-active-link-border-color: @body-bg;
+
+// Pills
+@nav-pills-active-link-hover-bg: @component-active-bg;
+@nav-pills-active-link-hover-color: #fff;
+
+
+// Pagination
+// -------------------------
+
+@pagination-bg: #fff;
+@pagination-border: #ddd;
+
+@pagination-hover-bg: @gray-lighter;
+
+@pagination-active-bg: @brand-primary;
+@pagination-active-color: #fff;
+
+@pagination-disabled-color: @gray-light;
+
+
+// Pager
+// -------------------------
+
+@pager-border-radius: 15px;
+@pager-disabled-color: @gray-light;
+
+
+// Jumbotron
+// -------------------------
+
+@jumbotron-padding: 30px;
+@jumbotron-color: inherit;
+@jumbotron-bg: @gray-lighter;
+
+@jumbotron-heading-color: inherit;
+
+
+// Form states and alerts
+// -------------------------
+
+@state-warning-text: #c09853;
+@state-warning-bg: #fcf8e3;
+@state-warning-border: darken(spin(@state-warning-bg, -10), 3%);
+
+@state-danger-text: #b94a48;
+@state-danger-bg: #f2dede;
+@state-danger-border: darken(spin(@state-danger-bg, -10), 3%);
+
+@state-success-text: #468847;
+@state-success-bg: #dff0d8;
+@state-success-border: darken(spin(@state-success-bg, -10), 5%);
+
+@state-info-text: #3a87ad;
+@state-info-bg: #d9edf7;
+@state-info-border: darken(spin(@state-info-bg, -10), 7%);
+
+
+// Tooltips
+// -------------------------
+@tooltip-max-width: 200px;
+@tooltip-color: #fff;
+@tooltip-bg: #000;
+
+@tooltip-arrow-width: 5px;
+@tooltip-arrow-color: @tooltip-bg;
+
+
+// Popovers
+// -------------------------
+@popover-bg: #fff;
+@popover-max-width: 276px;
+@popover-border-color: rgba(0,0,0,.2);
+@popover-fallback-border-color: #ccc;
+
+@popover-title-bg: darken(@popover-bg, 3%);
+
+@popover-arrow-width: 10px;
+@popover-arrow-color: #fff;
+
+@popover-arrow-outer-width: (@popover-arrow-width + 1);
+@popover-arrow-outer-color: rgba(0,0,0,.25);
+@popover-arrow-outer-fallback-color: #999;
+
+
+// Labels
+// -------------------------
+
+@label-default-bg: @gray-light;
+@label-primary-bg: @brand-primary;
+@label-success-bg: @brand-success;
+@label-info-bg: @brand-info;
+@label-warning-bg: @brand-warning;
+@label-danger-bg: @brand-danger;
+
+@label-color: #fff;
+@label-link-hover-color: #fff;
+
+
+// Modals
+// -------------------------
+@modal-inner-padding: 20px;
+
+@modal-title-padding: 15px;
+@modal-title-line-height: @line-height-base;
+
+@modal-content-bg: #fff;
+@modal-content-border-color: rgba(0,0,0,.2);
+@modal-content-fallback-border-color: #999;
+
+@modal-backdrop-bg: #000;
+@modal-header-border-color: #e5e5e5;
+@modal-footer-border-color: @modal-header-border-color;
+
+
+// Alerts
+// -------------------------
+@alert-padding: 15px;
+@alert-border-radius: @border-radius-base;
+@alert-link-font-weight: bold;
+
+@alert-success-bg: @state-success-bg;
+@alert-success-text: @state-success-text;
+@alert-success-border: @state-success-border;
+
+@alert-info-bg: @state-info-bg;
+@alert-info-text: @state-info-text;
+@alert-info-border: @state-info-border;
+
+@alert-warning-bg: @state-warning-bg;
+@alert-warning-text: @state-warning-text;
+@alert-warning-border: @state-warning-border;
+
+@alert-danger-bg: @state-danger-bg;
+@alert-danger-text: @state-danger-text;
+@alert-danger-border: @state-danger-border;
+
+
+// Progress bars
+// -------------------------
+@progress-bg: #f5f5f5;
+@progress-bar-color: #fff;
+
+@progress-bar-bg: @brand-primary;
+@progress-bar-success-bg: @brand-success;
+@progress-bar-warning-bg: @brand-warning;
+@progress-bar-danger-bg: @brand-danger;
+@progress-bar-info-bg: @brand-info;
+
+
+// List group
+// -------------------------
+@list-group-bg: #fff;
+@list-group-border: #ddd;
+@list-group-border-radius: @border-radius-base;
+
+@list-group-hover-bg: #f5f5f5;
+@list-group-active-color: #fff;
+@list-group-active-bg: @component-active-bg;
+@list-group-active-border: @list-group-active-bg;
+
+@list-group-link-color: #555;
+@list-group-link-heading-color: #333;
+
+
+// Panels
+// -------------------------
+@panel-bg: #fff;
+@panel-inner-border: #ddd;
+@panel-border-radius: @border-radius-base;
+@panel-footer-bg: #f5f5f5;
+
+@panel-default-text: @gray-dark;
+@panel-default-border: #ddd;
+@panel-default-heading-bg: #f5f5f5;
+
+@panel-primary-text: #fff;
+@panel-primary-border: @brand-primary;
+@panel-primary-heading-bg: @brand-primary;
+
+@panel-success-text: @state-success-text;
+@panel-success-border: @state-success-border;
+@panel-success-heading-bg: @state-success-bg;
+
+@panel-warning-text: @state-warning-text;
+@panel-warning-border: @state-warning-border;
+@panel-warning-heading-bg: @state-warning-bg;
+
+@panel-danger-text: @state-danger-text;
+@panel-danger-border: @state-danger-border;
+@panel-danger-heading-bg: @state-danger-bg;
+
+@panel-info-text: @state-info-text;
+@panel-info-border: @state-info-border;
+@panel-info-heading-bg: @state-info-bg;
+
+
+// Thumbnails
+// -------------------------
+@thumbnail-padding: 4px;
+@thumbnail-bg: @body-bg;
+@thumbnail-border: #ddd;
+@thumbnail-border-radius: @border-radius-base;
+
+@thumbnail-caption-color: @text-color;
+@thumbnail-caption-padding: 9px;
+
+
+// Wells
+// -------------------------
+@well-bg: #f5f5f5;
+
+
+// Badges
+// -------------------------
+@badge-color: #fff;
+@badge-link-hover-color: #fff;
+@badge-bg: @gray-light;
+
+@badge-active-color: @link-color;
+@badge-active-bg: #fff;
+
+@badge-font-weight: bold;
+@badge-line-height: 1;
+@badge-border-radius: 10px;
+
+
+// Breadcrumbs
+// -------------------------
+@breadcrumb-bg: #f5f5f5;
+@breadcrumb-color: #ccc;
+@breadcrumb-active-color: @gray-light;
+
+
+// Carousel
+// ------------------------
+
+@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
+
+@carousel-control-color: #fff;
+@carousel-control-width: 15%;
+@carousel-control-opacity: .5;
+@carousel-control-font-size: 20px;
+
+@carousel-indicator-active-bg: #fff;
+@carousel-indicator-border-color: #fff;
+
+@carousel-caption-color: #fff;
+
+
+// Close
+// ------------------------
+@close-color: #000;
+@close-font-weight: bold;
+@close-text-shadow: 0 1px 0 #fff;
+
+
+// Code
+// ------------------------
+@code-color: #c7254e;
+@code-bg: #f9f2f4;
+
+@pre-bg: #f5f5f5;
+@pre-color: @gray-dark;
+@pre-border-color: #ccc;
+@pre-scrollable-max-height: 340px;
+
+// Type
+// ------------------------
+@text-muted: @gray-light;
+@abbr-border-color: @gray-light;
+@headings-small-color: @gray-light;
+@blockquote-small-color: @gray-light;
+@blockquote-border-color: @gray-lighter;
+@page-header-border-color: @gray-lighter;
+
+// Miscellaneous
+// -------------------------
+
+// Hr border color
+@hr-border: @gray-lighter;
+
+// Horizontal forms & lists
+@component-offset-horizontal: 180px;
+
+
+// Container sizes
+// --------------------------------------------------
+
+// Small screen / tablet
+@container-tablet: ((720px + @grid-gutter-width));
+
+// Medium screen / desktop
+@container-desktop: ((940px + @grid-gutter-width));
+
+// Large screen / wide desktop
+@container-lg-desktop: ((1140px + @grid-gutter-width));