").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/themes/d3/scss/_components.scss b/themes/d3/scss/_components.scss
new file mode 100644
index 0000000..4269bc0
--- /dev/null
+++ b/themes/d3/scss/_components.scss
@@ -0,0 +1,515 @@
+/* ============================================================================
+Base tags
+============================================================================ */
+
+a {
+ text-decoration: none;
+ color: var(--link-color);
+
+ &.Link--external:after {
+ content: " " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=);
+ }
+
+ &.Link--broken {
+ color: red;
+ }
+}
+
+p {
+ margin: 0 0 1em;
+}
+
+hr {
+ clear: both;
+ margin: 1em 0;
+ border: 0;
+ border-top: 1px solid #ddd;
+}
+
+/* ============================================================================
+Components
+============================================================================ */
+
+.Button {
+ display: inline-block;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+ border: 1px solid transparent;
+ white-space: nowrap;
+ border-radius: 4px;
+
+ &--small {
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+ }
+
+ &--default {
+ color: #333;
+ background-color: #fff;
+ border-color: #ccc;
+
+ &.Button--active {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+ }
+ }
+}
+
+.ButtonGroup {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle; // match .Button alignment given font-size hack above
+
+ .Button + .Button {
+ margin-left: -1px;
+ }
+
+ > .Button {
+ position: relative;
+ float: left;
+
+ // Bring the "active" button to the front
+ &:hover,
+ &:focus {
+ z-index: 2;
+ }
+
+ &:active,
+ &.Button--active {
+ z-index: 3;
+ }
+
+ &:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ }
+
+ // Set corners individually because sometimes
+ // a single button can be in a .ButtonGroup
+ // and we need :first-child and :last-child to both match
+ &:first-child {
+ margin-left: 0;
+ }
+
+ &:first-child:not(:last-child) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+ }
+
+ &:last-child:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+ }
+ }
+}
+
+.Brand {
+ display: block;
+ background-color: var(--brand-background);
+ padding: 0.75em 0.6em;
+ font-size: var(--type-size-4);
+ text-shadow: none;
+ font-family: var(--font-family-heading);
+ font-weight: 700;
+ color: var(--brand-color);
+}
+
+.Navbar {
+ height: 50px;
+ box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
+ background-color: var(--homepage-navbar-background);
+ margin-bottom: 0;
+
+ .Brand {
+ float: left;
+ line-height: 20px;
+ height: 50px;
+ }
+}
+
+.CodeToggler {
+ padding: 0 20px;
+
+ &__text {
+ font-size: 12px;
+ line-height: 1.5;
+ padding: 6px 10px 6px 0;
+ display: inline-block;
+ vertical-align: middle;
+ }
+}
+
+// Sidebar navigation
+.Nav {
+ margin: 0;
+ padding: 0;
+
+ &__arrow {
+ display: inline-block;
+ position: relative;
+ width: 16px;
+ margin-left: -16px;
+
+ &:before {
+ position: absolute;
+ display: block;
+ content: "";
+ margin: -0.25em 0 0 -0.4em;
+ left: 50%;
+ top: 50%;
+ width: 0.5em;
+ height: 0.5em;
+ border-right: 0.15em solid var(--sidebar-link-arrow-color);
+ border-top: 0.15em solid var(--sidebar-link-arrow-color);
+ transform: rotate(45deg);
+ transition-duration: 0.3s;
+ }
+ }
+
+ &__item {
+ display: block;
+
+ a {
+ display: block;
+ margin: 0;
+ padding: 6px 15px 6px 20px;
+ font-family: var(--font-family-heading);
+ font-weight: 400;
+ color: var(--sidebar-link-color);
+ text-shadow: none;
+ }
+
+ a:hover {
+ color: var(--sidebar-link-color);
+ text-shadow: none;
+ background-color: var(--sidebar-link-hover-background);
+ }
+ }
+}
+
+.Nav .Nav {
+ display: none;
+ margin-left: 15px;
+
+ .Nav__item a {
+ margin: 0;
+ margin-left: -15px;
+ padding: 3px 30px;
+ font-family: var(--font-family-text);
+ color: var(--sidebar-link-secondary-color);
+ opacity: 0.7;
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+
+ .Nav__item--active a {
+ color: var(--sidebar-link-color);
+ }
+}
+
+.Nav__item {
+ &--open,
+ &--active {
+ > a {
+ background-color: var(--sidebar-link-active-background);
+ }
+ }
+
+ &--open {
+ > .Nav {
+ display: block;
+ }
+
+ > a > .Nav__arrow:before {
+ margin-left: -0.25em;
+ transform: rotate(135deg);
+ }
+ }
+}
+
+.Page__header {
+ margin: 0 0 10px;
+ padding: 0;
+ border-bottom: 1px solid #eee;
+
+ @include clearfix();
+
+ h1 {
+ margin: 0;
+ padding: 0;
+ line-height: 57px;
+ }
+
+ &--separator {
+ height: 0.6em;
+ }
+
+ a {
+ text-decoration: none;
+ }
+
+ .ModifiedDate {
+ float: left;
+ font-size: 10px;
+ color: gray;
+ }
+
+ .EditOn {
+ float: right;
+ font-size: 10px;
+ color: gray;
+ }
+}
+
+.Links {
+ padding: 0 20px;
+
+ a {
+ font-family: var(--font-family-heading);
+ font-weight: 400;
+ color: var(--sidebar-link-color);
+ line-height: 2em;
+ }
+}
+
+.Twitter {
+ padding: 0 20px;
+}
+
+.PoweredBy {
+ padding: 0 20px;
+ font-size: var(--type-size-6);
+}
+
+.Search {
+ position: relative;
+
+ &__field {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 30px 6px 20px;
+ color: var(--search-field-color);
+ border-width: 0 0 1px;
+ border-bottom: 1px solid var(--search-field-border-color);
+ background: var(--search-field-background);
+ transition: border-color ease-in-out 0.15s;
+
+ &:focus {
+ border-color: var(--search-field-hover-border-color);
+ outline: 0;
+ }
+ }
+
+ &__icon {
+ position: absolute;
+ right: 9px;
+ top: 9px;
+ width: 16px;
+ height: 16px;
+ }
+}
+
+.Navbar .Search {
+ float: right;
+ margin: 8px 20px;
+
+ &__field {
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-width: 0;
+ border-radius: 4px;
+ padding-left: 10px;
+ }
+}
+
+.TableOfContentsContainer {
+ &__title {
+ border-bottom: 4px solid #efefef;
+ margin-bottom: 0 !important;
+ }
+
+ &__content > .TableOfContents {
+ margin-top: 0;
+ }
+}
+
+ul.TableOfContents {
+ float: none;
+ font-size: 16px;
+ padding-left: 1.5em;
+ border-left: 6px solid #efefef;
+
+ p {
+ margin-bottom: 0;
+ }
+
+ a {
+ text-decoration: none;
+ }
+
+ .TableOfContents {
+ border-left-width: 0;
+ }
+}
+
+.Columns__right--full .TableOfContentsContainer {
+ float: right;
+ min-width: 300px;
+ max-width: 25%;
+ padding-left: 1em;
+
+ .TableOfContentsContainer__content > .TableOfContents {
+ border-right: 2px solid #efefef;
+ }
+
+ .TableOfContents {
+ list-style-type: none;
+ padding-left: 0;
+ }
+
+ a {
+ display: block;
+ border-bottom: 1px solid #ddd;
+ padding: 0.2em 0;
+ }
+
+ li a {
+ padding-left: 0.75em;
+ }
+
+ li li a {
+ padding-left: 1.5em;
+ }
+
+ li li li a {
+ padding-left: 2.25em;
+ }
+
+ li li li li a {
+ padding-left: 3em;
+ }
+}
+
+.Pager {
+ padding-left: 0;
+ margin: 1em 0;
+ list-style: none;
+ text-align: center;
+ clear: both;
+
+ @include clearfix();
+
+ li {
+ display: inline;
+
+ > a {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 15px;
+ }
+
+ > a:hover,
+ > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+ }
+ }
+
+ &--next > a {
+ float: right;
+ }
+
+ &--prev > a {
+ float: left;
+ }
+}
+
+.Checkbox {
+ position: relative;
+ display: block;
+ padding-left: 30px;
+ cursor: pointer;
+
+ input {
+ position: absolute;
+ z-index: -1;
+ opacity: 0;
+ }
+}
+
+.Checkbox__indicator {
+ position: absolute;
+ top: 50%;
+ left: 0;
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ background: var(--checkbox-background);
+
+ /* Check mark */
+ &:after {
+ position: absolute;
+ display: none;
+ content: "";
+ }
+
+ /* Hover and focus states */
+ .Checkbox:hover input ~ &,
+ .Checkbox input:focus ~ & {
+ background: var(--checkbox-hover-background);
+ }
+
+ /* Checked state */
+ .Checkbox input:checked ~ & {
+ background: var(--checkbox-checked-background);
+
+ /* Show check mark */
+ &:after {
+ display: block;
+ }
+ }
+
+ /* Hover state whilst checked */
+ .Checkbox:hover input:not([disabled]):checked ~ &, .Checkbox input:checked:focus ~ & {
+ background: var(--checkbox-checked-hover-background);
+ }
+
+ /* Disabled state */
+ .Checkbox input:disabled ~ & {
+ pointer-events: none;
+ opacity: 0.6;
+ background: var(--checkbox-disabled-background);
+ }
+
+ /* Checkbox tick */
+ .Checkbox &:after {
+ top: 4px;
+ left: 8px;
+ width: 5px;
+ height: 10px;
+ transform: rotate(45deg);
+ border: solid var(--checkbox-tick-color);
+ border-width: 0 2px 2px 0;
+ }
+
+ /* Disabled tick colour */
+ .Checkbox input:disabled ~ &:after {
+ border-color: var(--checkbox-disabled-tick-color);
+ }
+}
+
+.Collapsible__content {
+ padding-bottom: 1rem;
+}
+
+.Hidden {
+ display: none;
+}
diff --git a/themes/d3/scss/_fonts.scss b/themes/d3/scss/_fonts.scss
new file mode 100644
index 0000000..2896d79
--- /dev/null
+++ b/themes/d3/scss/_fonts.scss
@@ -0,0 +1,58 @@
+
+:root {
+ --font-family-text: -apple-system,
+ ".SFNSText-Regular",
+ "San Francisco",
+ "Roboto",
+ "Segoe UI",
+ "Helvetica Neue",
+ "Lucida Grande",
+ Arial,
+ sans-serif;
+ --font-family-monospace: Monaco, Menlo, Consolas, "Lucida Console", "Courier New", monospace;
+ --font-family-heading: "Roboto Slab", var(--font-family-text);
+}
+
+/*! Generated by Font Squirrel (https://www.fontsquirrel.com) */
+
+@font-face {
+ font-family: "Roboto Slab";
+ font-style: normal;
+ font-weight: 300;
+ src: url("../fonts/robotoslab-light.eot");
+ src:
+ url("../fonts/robotoslab-light.eot?#iefix") format("embedded-opentype"),
+ url("../fonts/robotoslab-light.woff2") format("woff2"),
+ url("../fonts/robotoslab-light.woff") format("woff"),
+ url("../fonts/robotoslab-light.ttf") format("truetype"),
+ url("../fonts/robotoslab-light.svg#roboto_slablight") format("svg");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
+}
+
+@font-face {
+ font-family: "Roboto Slab";
+ font-style: normal;
+ font-weight: 400;
+ src: url("../fonts/robotoslab-regular.eot");
+ src:
+ url("../fonts/robotoslab-regular.eot?#iefix") format("embedded-opentype"),
+ url("../fonts/robotoslab-regular.woff2") format("woff2"),
+ url("../fonts/robotoslab-regular.woff") format("woff"),
+ url("../fonts/robotoslab-regular.ttf") format("truetype"),
+ url("../fonts/robotoslab-regular.svg#roboto_slabregular") format("svg");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
+}
+
+@font-face {
+ font-family: "Roboto Slab";
+ font-style: normal;
+ font-weight: 700;
+ src: url("../fonts/robotoslab-bold.eot");
+ src:
+ url("../fonts/robotoslab-bold.eot?#iefix") format("embedded-opentype"),
+ url("../fonts/robotoslab-bold.woff2") format("woff2"),
+ url("../fonts/robotoslab-bold.woff") format("woff"),
+ url("../fonts/robotoslab-bold.ttf") format("truetype"),
+ url("../fonts/robotoslab-bold.svg#roboto_slabbold") format("svg");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
+}
diff --git a/themes/d3/scss/_homepage.scss b/themes/d3/scss/_homepage.scss
new file mode 100644
index 0000000..dbb8f20
--- /dev/null
+++ b/themes/d3/scss/_homepage.scss
@@ -0,0 +1,229 @@
+/* ============================================================================
+Homepage
+============================================================================ */
+
+.Container {
+ margin-right: auto;
+ margin-left: auto;
+
+ &--inner {
+ width: 80%;
+ margin: 0 auto;
+ }
+}
+
+@media (min-width: 1200px) {
+ .Container {
+ width: 1170px;
+ }
+}
+
+@media (min-width: 992px) {
+ .Container {
+ width: 970px;
+ }
+}
+
+@media (min-width: 769px) {
+ .Container {
+ width: 750px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .Container {
+ width: 1170px;
+ }
+}
+
+.Homepage {
+ padding-top: 60px !important;
+ background-color: var(--homepage-hero-background);
+ border-radius: 0;
+ border: none;
+ color: var(--homepage-hero-color);
+ overflow: hidden;
+ padding-bottom: 0;
+ margin-bottom: 0;
+
+ @include kill-box-shadow;
+}
+
+.HomepageTitle {
+ h2 {
+ width: 80%;
+ font-size: 30px;
+ margin: 20px auto;
+ text-align: center;
+ }
+}
+
+.HomepageImage {
+ img {
+ display: block;
+ max-width: 80%;
+ margin: 0 auto;
+ height: auto;
+ }
+}
+
+.HomepageButtons {
+ padding: 20px 0;
+ background-color: var(--hero-button-block-background);
+ text-align: center;
+
+ @include clearfix;
+
+ .Button--hero {
+ padding: 20px 30px;
+ border-radius: 0;
+ text-shadow: none;
+ opacity: 0.8;
+ margin: 0 10px;
+ text-transform: uppercase;
+ border: 5px solid var(--hero-button-border-color);
+ font-family: var(--font-family-heading);
+ font-weight: 700;
+
+ @include kill-background-image;
+ @include kill-box-shadow;
+
+ @media (max-width: 768px) {
+ display: block;
+ margin-bottom: 10px;
+ }
+
+ &:hover {
+ opacity: 1;
+ }
+
+ &.Button--secondary {
+ background-color: var(--hero-button-secondary-background);
+ color: var(--hero-button-secondary-color);
+ }
+
+ &.Button--primary {
+ background-color: var(--hero-buttom-primary-background);
+ color: var(--hero-button-primary-color);
+ }
+ }
+}
+
+.HomepageContent {
+ background-color: white;
+ padding: 40px 0;
+
+ ul, ol {
+ li {
+ list-style: none;
+ margin-bottom: 0.5em;
+ position: relative;
+ }
+
+ li:before {
+ position: absolute;
+ top: 50%;
+ left: -1.5em;
+ content: "";
+ width: 0;
+ height: 0;
+ border: 0.5em solid transparent;
+ border-left: 0.5em solid var(--homepage-bullet-color);
+ float: left;
+ display: block;
+ margin-top: -0.5em;
+ }
+ }
+
+ .HeroText {
+ font-family: var(--font-family-heading);
+ font-weight: 300;
+ font-size: 16px;
+ margin-bottom: 20px;
+ line-height: 1.4;
+ }
+
+ @media (min-width: 769px) {
+ padding: 40px 20px;
+
+ .HeroText {
+ font-size: 21px;
+ }
+
+ .Row {
+ margin: 0 -15px;
+ }
+
+ .Row__third, .Row__half, .Row__quarter {
+ float: left;
+ position: relative;
+ min-height: 1px;
+ padding-left: 15px;
+ padding-right: 15px;
+ }
+
+ .Row__third {
+ width: 33.333333%;
+ }
+
+ .Row__half {
+ width: 50%;
+ }
+
+ .Row__quarter {
+ width: 25%;
+ }
+ }
+}
+
+.HomepageFooter {
+ background-color: var(--homepage-footer-background);
+ color: var(--homepage-footer-color);
+ border: none;
+
+ @include kill-box-shadow;
+ @include clearfix;
+
+ @media (max-width: 768px) {
+ padding: 0 20px;
+ text-align: center;
+
+ .HomepageFooter__links {
+ padding-left: 0;
+ list-style-type: none;
+ }
+ }
+
+ @media (min-width: 769px) {
+ .HomepageFooter__links {
+ float: left;
+ }
+
+ .HomepageFooter__twitter {
+ float: right;
+ }
+ }
+
+ &__links {
+ margin: 40px 0;
+
+ li a {
+ line-height: 32px;
+ font-size: 16px;
+ font-family: var(--font-family-heading);
+ font-weight: 700;
+ }
+
+ li a:hover {
+ text-decoration: underline;
+ }
+ }
+
+ &__twitter {
+ margin: 40px 0;
+ }
+
+ .Twitter {
+ margin-bottom: 20px;
+ }
+}
diff --git a/themes/d3/scss/_mixins.scss b/themes/d3/scss/_mixins.scss
new file mode 100644
index 0000000..6ced5e5
--- /dev/null
+++ b/themes/d3/scss/_mixins.scss
@@ -0,0 +1,36 @@
+/* ============================================================================
+Mixins
+============================================================================ */
+
+@mixin kill-background-image {
+ background-image: none;
+ filter: none;
+}
+
+@mixin kill-box-shadow {
+ box-shadow: none;
+}
+
+// Clearfix
+//
+// For modern browsers
+// 1. The space content is one way to avoid an Opera bug when the
+// contenteditable attribute is included anywhere else in the document.
+// Otherwise it causes space to appear at the top and bottom of elements
+// that are clearfixed.
+// 2. The use of `table` rather than `block` is only necessary if using
+// `:before` to contain the top-margins of child elements.
+//
+// Source: http://nicolasgallagher.com/micro-clearfix-hack/
+
+@mixin clearfix {
+ &:before,
+ &:after {
+ content: " "; // 1
+ display: table; // 2
+ }
+
+ &:after {
+ clear: both;
+ }
+}
diff --git a/themes/d3/scss/_print.scss b/themes/d3/scss/_print.scss
new file mode 100644
index 0000000..10fa1e9
--- /dev/null
+++ b/themes/d3/scss/_print.scss
@@ -0,0 +1,65 @@
+
+* {
+ text-shadow: none !important;
+ color: #000 !important; // Black prints faster: h5bp.com/s
+ background: transparent !important;
+ box-shadow: none !important;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ page-break-after: avoid;
+ page-break-before: auto;
+}
+
+pre, blockquote {
+ border: 1px solid #999;
+ font-style: italic;
+ page-break-inside: avoid;
+}
+
+img {
+ page-break-inside: avoid;
+ border: 0; /* Some browsers like to show a border around images. Switch it off */
+}
+
+a,
+a:visited { text-decoration: underline; }
+
+abbr[title]:after { content: " (" attr(title) ")"; }
+
+q {
+ quotes: none;
+
+ &:before { content: ""; }
+
+ &:after { content: " (" attr(cite) ")"; }
+}
+
+.PageBreak {
+ display: block;
+ page-break-before: always;
+}
+
+.NoPrint { display: none; }
+
+/* Hide the navigation */
+aside { display: none; }
+
+.Pager { display: none; }
+
+.Columns__right {
+ width: 100% !important;
+}
+
+.s-content a:after {
+ content: " (" attr(href) ")";
+ font-size: 80%;
+ word-wrap: break-word; /* break long urls that donìt fit the page width */
+}
+
+/* Anchors don't need that */
+.s-content a[href^="#"]:after { content: ""; }
+
+h1 a[href]:after {
+ font-size: 50%;
+}
diff --git a/themes/d3/scss/_structure.scss b/themes/d3/scss/_structure.scss
new file mode 100644
index 0000000..b917093
--- /dev/null
+++ b/themes/d3/scss/_structure.scss
@@ -0,0 +1,135 @@
+
+*, *:after, *:before {
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+ padding: 0;
+}
+
+/* ============================================================================
+Docs Body & Page Structure
+============================================================================ */
+
+html {
+ font-size: 14px;
+
+ @media (--viewport-large) {
+ font-size: 16px;
+ }
+}
+
+html, body {
+ height: 100%;
+ background-color: #fff;
+ color: var(--text);
+}
+
+.Columns {
+ &__left {
+ background-color: var(--sidebar-background);
+ }
+
+ &__right {
+ &__content {
+ padding: 10px;
+ background-color: #fff;
+ }
+ }
+}
+
+// mobile friendly sub-nav
+.Collapsible__content {
+ display: none;
+}
+
+.Collapsible__trigger {
+ margin: 12px;
+ padding: 7px 10px;
+ background-color: transparent;
+ border: none;
+ float: right;
+
+ @include kill-background-image;
+ @include kill-box-shadow;
+
+ &__bar {
+ display: block;
+ width: 18px;
+ height: 2px;
+ margin-top: 2px;
+ margin-bottom: 3px;
+ background-color: var(--sidebar-collapsible--hamburger-color);
+ }
+
+ &:hover {
+ background-color: var(--sidebar-collapsible--hamburger-hover-background);
+
+ @include kill-box-shadow;
+
+ .Collapsible__trigger__bar {
+ background-color: var(--sidebar-collapsible--hamburger-hover-color);
+ }
+ }
+}
+
+@media screen and (min-width: 769px) {
+ body {
+ //Needed only for floating code blocks
+ background-color: var(--content-floating-blocks-background);
+ }
+
+ .Navbar {
+ position: fixed;
+ z-index: 1030;
+ width: 100%;
+ }
+
+ .Collapsible {
+ &__trigger {
+ display: none !important;
+ }
+
+ &__content {
+ display: block !important;
+ }
+ }
+
+ .Columns {
+ height: 100%;
+
+ &:after,
+ &:before {
+ content: " ";
+ display: table;
+ }
+
+ &:after {
+ clear: both;
+ }
+
+ &__left, &__right {
+ position: relative;
+ min-height: 1px;
+ float: left;
+ overflow: auto;
+ height: 100%;
+ }
+
+ &__left {
+ width: 25%;
+ border-right: 1px solid var(--sidebar-border);
+ overflow-x: hidden;
+ }
+
+ &__right {
+ width: 75%;
+
+ &__content {
+ padding: 0 20px 20px;
+ min-height: 100%;
+ }
+ }
+ }
+}
diff --git a/themes/d3/scss/_typography.scss b/themes/d3/scss/_typography.scss
new file mode 100644
index 0000000..2f67df1
--- /dev/null
+++ b/themes/d3/scss/_typography.scss
@@ -0,0 +1,347 @@
+/* ============================================================================
+Base CSS
+============================================================================ */
+
+body {
+ line-height: 1.5;
+
+ font-family: var(--font-family-text);
+ font-feature-settings: "kern" 1;
+ font-kerning: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: var(--font-family-heading);
+ font-weight: 300;
+}
+
+.s-content {
+ h1, h2, h3, h4, h5, h6 {
+ cursor: text;
+ line-height: 1.4em;
+ margin: 2em 0 0.5em;
+
+ tt, code {
+ font-size: inherit;
+ }
+
+ i {
+ font-size: 0.7em;
+ }
+
+ p {
+ margin-top: 0;
+ }
+ }
+
+ h1 {
+ margin-top: 0;
+ font-size: var(--type-size-3);
+ }
+
+ h2 {
+ font-size: var(--type-size-4);
+ }
+
+ h3 {
+ font-size: var(--type-size-5);
+ }
+
+ h4 {
+ font-size: var(--type-size-6);
+ }
+
+ h5 {
+ font-size: var(--type-size-6);
+ }
+
+ h6 {
+ font-size: var(--type-size-6);
+ }
+
+ a {
+ text-decoration: underline;
+ }
+
+ small {
+ font-size: var(--type-size-6);
+ }
+
+ p {
+ margin-bottom: 1.3em;
+ }
+
+ ul, ol {
+ padding-left: 2em;
+ }
+
+ ul p {
+ margin: 0;
+ }
+
+ ul ul {
+ margin: 0;
+ }
+
+ dl {
+ padding: 0;
+
+ dt {
+ font-weight: bold;
+ font-style: italic;
+ padding: 0;
+ margin: 15px 0 5px;
+ }
+
+ dt:first-child {
+ padding: 0;
+ }
+
+ dd {
+ margin: 0 0 15px;
+ padding: 0 15px;
+ }
+ }
+
+ blockquote {
+ margin: 0.75em 2em;
+ padding: 0.5em 1em;
+ font-style: italic;
+ border-left: 0.25em solid var(--blockquote-border-color);
+
+ cite {
+ font-style: italic;
+ }
+
+ cite:before {
+ content: "\2014";
+ padding-right: 0.5em;
+ }
+ }
+
+ table {
+ width: 100%;
+ padding: 0;
+ margin-bottom: 1em;
+ border-collapse: collapse;
+
+ font-size: var(--type-size-6);
+
+ + table {
+ margin-top: 1em;
+ }
+
+ tr {
+ border-top: 1px solid #eee;
+ background-color: white;
+ margin: 0;
+ padding: 0;
+ }
+
+ tr:nth-child(2n) {
+ background-color: var(--lightest-gray);
+ }
+
+ th {
+ font-weight: bold;
+ border: 1px solid var(--light-gray);
+ background: var(--lighter-gray);
+ margin: 0;
+ padding: 0.5em;
+ }
+
+ td {
+ border: 1px solid var(--lighter-gray);
+ margin: 0;
+ padding: 0.5em;
+ }
+ }
+
+ ul,
+ ol,
+ blockquote,
+ dl dt,
+ dl dd,
+ table th,
+ table td {
+ > :first-child {
+ margin-top: 0;
+ }
+
+ > :last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ img {
+ max-width: 100%;
+ display: block;
+ margin: 0 auto;
+ }
+
+ code {
+ font-family: var(--font-family-monospace);
+ padding-top: 0.1rem;
+ padding-bottom: 0.1rem;
+ background: var(--code-tag-background-color);
+ border: 1px solid var(--light-gray);
+ border-radius: var(--code-tag-border-radius);
+ box-shadow: var(--code-tag-box-shadow);
+
+ &:before,
+ &:after {
+ letter-spacing: -0.2em;
+ content: "\00a0"; /* non-breaking space*/
+ }
+ }
+
+ pre {
+ background: #fdf6e3;
+ color: #657b83;
+ line-height: 1.5em;
+ overflow: auto;
+ border: none;
+ border-radius: 0;
+ padding: 0.75em 2em;
+ margin: 0 -20px 20px -20px;
+
+ code {
+ margin: 0;
+ padding: 0;
+ white-space: pre;
+ box-shadow: none;
+ }
+
+ code:before,
+ code:after {
+ display: none;
+ }
+
+ code, tt {
+ background-color: transparent;
+ border: none;
+ }
+ }
+
+ u,
+ ins {
+ text-decoration: none;
+ border-bottom: 1px solid var(--text);
+
+ a {
+ color: inherit;
+ }
+ }
+
+ del a {
+ color: inherit;
+ }
+}
+
+//Content pages float view
+@media (min-width: 1150px) {
+ .Columns__right--float .Columns__right__content {
+ height: 100%;
+ overflow: auto;
+ padding: 0 !important;
+ background-color: transparent !important;
+ position: relative;
+
+ article {
+ width: 100%;
+ min-height: 100%;
+ overflow: auto;
+ position: relative;
+ z-index: 1;
+ }
+
+ article:before {
+ content: "";
+ width: 50%;
+ min-height: 100%;
+ overflow: auto;
+ background-color: white;
+ display: block;
+ margin: 0;
+ position: absolute;
+ z-index: -1;
+ }
+ }
+
+ .Columns__right--float {
+ .Pager,
+ .Page__header,
+ .s-content blockquote,
+ .s-content p,
+ .s-content ul,
+ .s-content ol,
+ .s-content dl,
+ .s-content h2,
+ .s-content h3,
+ .s-content h4,
+ .s-content h5,
+ .s-content h6,
+ .s-content hr,
+ .s-content table {
+ float: left;
+ clear: left;
+ width: 47%;
+ margin-left: 1.5%;
+ margin-right: 1.5%;
+ }
+ }
+
+ .Columns__right--float .s-content {
+ table {
+ background-color: white;
+ white-space: normal;
+
+ pre, code {
+ white-space: normal;
+ }
+ }
+
+ blockquote, p, ul, ol, dl, h2, h3, h4, h5, h6, hr {
+ &:before {
+ width: 100%;
+ height: 10px;
+ display: block;
+ clear: both;
+ }
+
+ p, ul, ol, dl, h2, h3, h4, h5, h6, pre, hr {
+ width: auto;
+ float: none;
+ display: block;
+ }
+ }
+
+ hr {
+ border-color: #ddd;
+ }
+
+ // Paragraphs and code inside lists and
+ // blockquotes should have 100% width
+ li, blockquote {
+ p, pre {
+ width: 100%;
+ }
+ }
+
+ pre {
+ float: left;
+ clear: right;
+ width: 50%;
+ border: none;
+ border-left: 10px solid white;
+ margin: 0 0 10px;
+ padding: 0;
+
+ code {
+ padding: 0 0.5em;
+ }
+ }
+ }
+}
diff --git a/themes/d3/scss/_variables.scss b/themes/d3/scss/_variables.scss
new file mode 100644
index 0000000..f342226
--- /dev/null
+++ b/themes/d3/scss/_variables.scss
@@ -0,0 +1,89 @@
+:root {
+ // Gray Scale
+ --gray: #7a8288;
+ --dark-gray: color(var(--gray) blend(#000 40%));
+ //--darker-gray: color(var(--gray) blend(#000 60%));
+ --light-gray: color(var(--gray) blend(#fff 50%));
+ --lighter-gray: color(var(--gray) blend(#fff 70%));
+ --lightest-gray: color(var(--gray) blend(#fff 90%));
+
+ // Type Scale
+ --type-size-1: 2.441rem; // ~39.056px
+ --type-size-2: 1.953rem; // ~31.248px
+ --type-size-3: 1.563rem; // ~25.008px
+ --type-size-4: 1.25rem; // ~20px
+ --type-size-5: 1rem; // ~16px
+ --type-size-6: 0.75rem; // ~12px
+
+ --dark: #3f4657;
+ --light: #82becd;
+ --text: #222;
+
+ --link-color: var(--light);
+ --brand-color: var(--light);
+ --brand-background: var(--dark);
+
+ // Sidebar
+ --sidebar-border: #e7e7e9;
+ --sidebar-background: #f7f7f7;
+
+ // Sidebar links
+ --sidebar-link-color: var(--dark);
+ --sidebar-link-active-background: #c5c5cb;
+ --sidebar-link-hover-background: var(--sidebar-link-active-background);
+ --sidebar-link-arrow-color: var(--dark);
+ --sidebar-link-secondary-color: var(--text);
+
+ // Sidebar Checkbox
+ --checkbox-background: #e6e6e6;
+ --checkbox-hover-background: #ccc;
+ --checkbox-checked-background: var(--dark);
+ --checkbox-checked-hover-background: var(--light);
+ --checkbox-tick-color: #fff;
+ --checkbox-disabled-background: #e6e6e6;
+ --checkbox-disabled-tick-color: #7b7b7b;
+
+ // Sidebar search field
+ --search-field-color: #555;
+ --search-field-border-color: #ccc;
+ --search-field-background: #fff;
+ --search-field-hover-border-color: var(--light);
+
+ // Sidebar hamburger
+ --sidebar-collapsible--hamburger-color: var(--light);
+ --sidebar-collapsible--hamburger-hover-color: var(--dark);
+ --sidebar-collapsible--hamburger-hover-background: var(--light);
+
+ // Homepage
+ --homepage-navbar-background: var(--dark);
+
+ --homepage-hero-background: var(--light);
+ --homepage-hero-color: var(--dark);
+ --homepage-bullet-color: var(--light);
+
+ --homepage-footer-color: var(--light);
+ --homepage-footer-background: var(--dark);
+
+ // Homepage Hero Buttons
+ --hero-button-block-background: var(--sidebar-link-active-background);
+ --hero-button-border-color: var(--dark);
+ --hero-button-primary-color: var(--sidebar-background);
+ --hero-buttom-primary-background: var(--dark);
+ --hero-button-secondary-color: var(--dark);
+ --hero-button-secondary-background: var(--sidebar-link-active-background);
+
+ --content-floating-blocks-background: var(--light);
+ --code-tag-color: var(--dark);
+
+ --code-tag-background-color: #fafafa;
+ --code-tag-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125);
+ --code-tag-border-radius: 4px;
+
+ --blockquote-border-color: var(--dark);
+}
+
+/*
+ * Breakpoints
+ * ===================================================================== */
+@custom-media --viewport-small (width < 850px);
+@custom-media --viewport-large (width >= 850px);
diff --git a/themes/d3/scss/theme-blue.scss b/themes/d3/scss/theme-blue.scss
new file mode 100644
index 0000000..66ab899
--- /dev/null
+++ b/themes/d3/scss/theme-blue.scss
@@ -0,0 +1,9 @@
+@import "theme.scss";
+
+//Daux.io Blue
+:root {
+ --sidebar-background: #f7f7f7;
+ --sidebar-link-active-background: #c5c5cb;
+ --dark: #3f4657;
+ --light: #82becd;
+}
diff --git a/themes/d3/scss/theme-green.scss b/themes/d3/scss/theme-green.scss
new file mode 100644
index 0000000..9fffb51
--- /dev/null
+++ b/themes/d3/scss/theme-green.scss
@@ -0,0 +1,9 @@
+@import "theme.scss";
+
+//Daux.io Green
+:root {
+ --sidebar-background: #f5f5f6;
+ --sidebar-link-active-background: #a0d55d;
+ --dark: #000;
+ --light: #8acc37;
+}
diff --git a/themes/d3/scss/theme-navy.scss b/themes/d3/scss/theme-navy.scss
new file mode 100644
index 0000000..da8464b
--- /dev/null
+++ b/themes/d3/scss/theme-navy.scss
@@ -0,0 +1,9 @@
+@import "theme.scss";
+
+//Daux.io Navy
+:root {
+ --sidebar-background: #f5f5f6;
+ --sidebar-link-active-background: #c5c5cb;
+ --dark: #13132a;
+ --light: #7795b4;
+}
diff --git a/themes/d3/scss/theme-red.scss b/themes/d3/scss/theme-red.scss
new file mode 100644
index 0000000..93aeb82
--- /dev/null
+++ b/themes/d3/scss/theme-red.scss
@@ -0,0 +1,9 @@
+@import "theme.scss";
+
+// Daux.io Red
+:root {
+ --sidebar-background: #f7f7f7;
+ --sidebar-link-active-background: #eee;
+ --dark: #c64641;
+ --light: #ecb5a1;
+}
diff --git a/themes/d3/scss/theme.scss b/themes/d3/scss/theme.scss
new file mode 100644
index 0000000..1bd167d
--- /dev/null
+++ b/themes/d3/scss/theme.scss
@@ -0,0 +1,24 @@
+/*!
+ * DAUX.IO
+ * https://dauxio.github.io/
+ * MIT License
+ */
+
+// Daux Style
+@import "vendor/normalize.scss";
+@import "_fonts.scss";
+@import "_variables.scss";
+@import "_mixins.scss";
+
+// Layout
+@import "_structure.scss";
+
+// Content presentation
+@import "_typography.scss";
+@import "_components.scss";
+@import "_homepage.scss";
+@import "vendor/highlight.scss";
+
+@media print {
+ @import "_print.scss";
+}
diff --git a/themes/d3/scss/vendor/highlight.scss b/themes/d3/scss/vendor/highlight.scss
new file mode 100644
index 0000000..ee1a77d
--- /dev/null
+++ b/themes/d3/scss/vendor/highlight.scss
@@ -0,0 +1,88 @@
+/* ===========================================================================================
+Code Highlighting
+============================================================================================== */
+
+/*
+
+Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
+
+*/
+
+.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 0.5em;
+ background: #fdf6e3;
+ color: #657b83;
+}
+
+.hljs-comment,
+.hljs-quote {
+ color: #93a1a1;
+}
+
+/* Solarized Green */
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-addition {
+ color: #859900;
+}
+
+/* Solarized Cyan */
+.hljs-number,
+.hljs-string,
+.hljs-meta .hljs-meta-string,
+.hljs-literal,
+.hljs-doctag,
+.hljs-regexp {
+ color: #2aa198;
+}
+
+/* Solarized Blue */
+.hljs-title,
+.hljs-section,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class {
+ color: #268bd2;
+}
+
+/* Solarized Yellow */
+.hljs-attribute,
+.hljs-attr,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-class .hljs-title,
+.hljs-type {
+ color: #b58900;
+}
+
+/* Solarized Orange */
+.hljs-symbol,
+.hljs-bullet,
+.hljs-subst,
+.hljs-meta,
+.hljs-meta .hljs-keyword,
+.hljs-selector-attr,
+.hljs-selector-pseudo,
+.hljs-link {
+ color: #cb4b16;
+}
+
+/* Solarized Red */
+.hljs-built_in,
+.hljs-deletion {
+ color: #dc322f;
+}
+
+.hljs-formula {
+ background: #eee8d5;
+}
+
+.hljs-emphasis {
+ font-style: italic;
+}
+
+.hljs-strong {
+ font-weight: bold;
+}
diff --git a/themes/d3/scss/vendor/normalize.scss b/themes/d3/scss/vendor/normalize.scss
new file mode 100644
index 0000000..f9fca61
--- /dev/null
+++ b/themes/d3/scss/vendor/normalize.scss
@@ -0,0 +1,419 @@
+/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
+
+/**
+ * 1. Change the default font family in all browsers (opinionated).
+ * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ * 2. Add the correct display in IE.
+ */
+
+article,
+aside,
+details, /* 1 */
+figcaption,
+figure,
+footer,
+header,
+main, /* 2 */
+menu,
+nav,
+section,
+summary { /* 1 */
+ display: block;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Add the correct display in IE 10-.
+ * 1. Add the correct display in IE.
+ */
+
+template, /* 1 */
+[hidden] {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+
+a {
+ background-color: transparent; /* 1 */
+ -webkit-text-decoration-skip: objects; /* 2 */
+}
+
+/**
+ * Remove the outline on focused links when they are also active or hovered
+ * in all browsers (opinionated).
+ */
+
+a:active,
+a:hover {
+ outline-width: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * 1. Remove the bottom border in Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+
+b,
+strong {
+ font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+
+mark {
+ background-color: #ff0;
+ color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+
+img {
+ border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct margin in IE 8.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change font properties to `inherit` in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+select,
+textarea {
+ font: inherit; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Restore the font weight unset by the previous rule.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ * controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+html [type="button"], /* 1 */
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Change the border, margin, and padding in all browsers (opinionated).
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
+ */
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Correct the text style of placeholders in Chrome, Edge, and Safari.
+ */
+
+::-webkit-input-placeholder {
+ color: inherit;
+ opacity: 0.54;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
diff --git a/themes/d3/templates/home.php b/themes/d3/templates/home.php
new file mode 100644
index 0000000..f452e3a
--- /dev/null
+++ b/themes/d3/templates/home.php
@@ -0,0 +1,81 @@
+layout('theme::layout/00_layout') ?>
+
+start('classes') ?>homepagestop() ?>
+
+
+
+ insert('theme::partials/navbar_content', ['params' => $params]); ?>
+
+
+
+
+
+
+ = ($params['title'])? '
' . $params['title'] . '
' : '' ?>
+ = ($params['titledesc'])? '
' . $params['titledesc'] . '
' : '' ?>
+
+
+ = ($params['image'])? '
![' . $params['title'] . '](' . $params['image'] . ')
' : '' ?>
+
+
+ = ($params['author'])? '
' . $this->translate("author") . ': ' . $params['author'] . '
' : '' ?>
+ = ($params['moduledate'])? '
' . $this->translate("moduledate") . ': ' . $params['moduledate'] . '
' : '' ?>
+ = ($params['moduleversion'])? '
' . $this->translate("version") . ': ' . $params['moduleversion'] . '
' : '' ?>
+ = ($params['editors'])? '
' . $this->translate("editors") . ': ' . $params['editors'] . '
' : '' ?>
+
+
+
+
+
+ ' . $this->translate("View_on_github") . '';
+ }
+ $view_doc = $this->translate("View_documentation");
+ foreach ($page['entry_page'] as $key => $node) {
+ echo '
' . str_replace("__VIEW_DOCUMENTATION__", $view_doc, $key) . '';
+ }
+ if(isset($params['html']['buttons']) && is_array($params['html']['buttons'])) {
+ foreach ($params['html']['buttons'] as $name => $link ) {
+ echo '
' . $name . '';
+ }
+ }
+ ?>
+
+
+
+
+
+
+
+
+ = $page['content']; ?>
+
+
+
+
+
+
+
diff --git a/themes/d3/templates/layout/00_layout.php b/themes/d3/templates/layout/00_layout.php
new file mode 100644
index 0000000..5b47147
--- /dev/null
+++ b/themes/d3/templates/layout/00_layout.php
@@ -0,0 +1,80 @@
+
+
+
+ = strip_tags($page['title']); ?> = ($page['title'] != $params['title'])? '- ' . strip_tags($params['title']) : "" ?>
+ \n";
+ } elseif (array_key_exists('tagline', $params)) {
+ echo " \n";
+ }
+ if (array_key_exists('attributes', $page) && array_key_exists('keywords', $page['attributes'])) {
+ echo " \n";
+ }
+ if (array_key_exists('attributes', $page) && array_key_exists('author', $page['attributes'])) {
+ echo " \n";
+ } elseif (array_key_exists('author', $params)) {
+ echo " \n";
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+ ";
+ } ?>
+
+
+ ";
+ } ?>
+
+
+
+
+
+
+
+
+
+= $this->section('content'); ?>
+
+insert('theme::partials/google_analytics', ['analytics' => $params['html']['google_analytics'], 'host' => array_key_exists('host', $params) ? $params['host'] : '']);
+}
+if ($params['html']['piwik_analytics']) {
+ $this->insert('theme::partials/piwik_analytics', ['url' => $params['html']['piwik_analytics'], 'id' => $params['html']['piwik_analytics_id']]);
+}
+?>
+
+
+';
+} ?>
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/d3/templates/partials/navbar_content.php b/themes/d3/templates/partials/navbar_content.php
new file mode 100644
index 0000000..b4fa132
--- /dev/null
+++ b/themes/d3/templates/partials/navbar_content.php
@@ -0,0 +1,11 @@
+= ($page['title'] != $params['title']) ? $params['title'] : $params['author']; ?>
+
+
+
+
+
" autocomplete="on"
+ results=25 autosave=text_search>
+
+