summaryrefslogtreecommitdiff
path: root/src/stylesheets
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2021-06-01 23:54:51 -0600
committerGitHub <noreply@github.com>2021-06-01 23:54:51 -0600
commit073c4224ace75fe119dab2fca2bf7b0fd3ae17a7 (patch)
tree51a8f84e870c173e47fde720603f7a8763639c93 /src/stylesheets
parentc99153748c06e48ea7eba529ce0038f0519bfdfc (diff)
resolves #4062 import source and build for default stylesheet (PR #4064)
Diffstat (limited to 'src/stylesheets')
-rw-r--r--src/stylesheets/.gitignore2
-rw-r--r--src/stylesheets/.stylelintrc8
-rw-r--r--src/stylesheets/README.adoc24
-rw-r--r--src/stylesheets/asciidoctor.css2447
-rw-r--r--src/stylesheets/lib/postcss-minify-selectors.js24
-rw-r--r--src/stylesheets/lib/postcss-rule-per-line.js18
-rw-r--r--src/stylesheets/package.json15
-rw-r--r--src/stylesheets/postcss.config.js20
8 files changed, 2558 insertions, 0 deletions
diff --git a/src/stylesheets/.gitignore b/src/stylesheets/.gitignore
new file mode 100644
index 00000000..936e5c57
--- /dev/null
+++ b/src/stylesheets/.gitignore
@@ -0,0 +1,2 @@
+/node_modules/
+/package-lock.json
diff --git a/src/stylesheets/.stylelintrc b/src/stylesheets/.stylelintrc
new file mode 100644
index 00000000..437cd1cc
--- /dev/null
+++ b/src/stylesheets/.stylelintrc
@@ -0,0 +1,8 @@
+{
+ "extends": "stylelint-config-standard",
+ "rules": {
+ "comment-empty-line-before": null,
+ "no-descending-specificity": null,
+ "no-duplicate-selectors": null,
+ }
+}
diff --git a/src/stylesheets/README.adoc b/src/stylesheets/README.adoc
new file mode 100644
index 00000000..b32647d5
--- /dev/null
+++ b/src/stylesheets/README.adoc
@@ -0,0 +1,24 @@
+= Default Stylesheet Build
+
+This directory contains the source and build for the default stylesheet used by the built-in HTML converter.
+
+== Overview
+
+The stylesheet is written in plain CSS.
+The build minifies the stylesheet using PostCSS + cssnano and writes it to the data/stylesheets directory.
+
+== Usage
+
+To regenerate the default stylesheet, first install the npm packages using the `npm` command:
+
+ $ npm i
+
+Next, run the npm script named `build`:
+
+ $ npm run build
+
+If there are any changes to the [.path]_data/stylesheets/asciidoctor-default.css_ file, commit this file.
+
+To validate the syntax of the CSS source, run the npm script named `lint`:
+
+ $ npm run lint
diff --git a/src/stylesheets/asciidoctor.css b/src/stylesheets/asciidoctor.css
new file mode 100644
index 00000000..caaa7752
--- /dev/null
+++ b/src/stylesheets/asciidoctor.css
@@ -0,0 +1,2447 @@
+/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
+/* Uncomment the following line when using as a custom stylesheet */
+/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section {
+ display: block;
+}
+
+audio,
+video {
+ display: inline-block;
+}
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+
+a {
+ background: none;
+}
+
+a:focus {
+ outline: thin dotted;
+}
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+b,
+strong {
+ font-weight: bold;
+}
+
+dfn {
+ font-style: italic;
+}
+
+hr {
+ height: 0;
+}
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace;
+ 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: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+img {
+ border: 0;
+}
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+figure {
+ margin: 0;
+}
+
+fieldset {
+ border: 1px solid silver;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.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] {
+ padding: 0;
+}
+
+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 {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+html,
+body {
+ font-size: 100%;
+}
+
+body {
+ background: #fff;
+ color: rgba(0, 0, 0, 0.8);
+ padding: 0;
+ margin: 0;
+ font-family: "Noto Serif", "DejaVu Serif", serif;
+ font-weight: 400;
+ font-style: normal;
+ line-height: 1;
+ position: relative;
+ cursor: auto;
+ tab-size: 4;
+ word-wrap: anywhere;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+}
+
+a:hover {
+ cursor: pointer;
+}
+
+img,
+object,
+embed {
+ max-width: 100%;
+ height: auto;
+}
+
+object,
+embed {
+ height: 100%;
+}
+
+img {
+ -ms-interpolation-mode: bicubic;
+}
+
+.left {
+ float: left !important;
+}
+
+.right {
+ float: right !important;
+}
+
+.text-left {
+ text-align: left !important;
+}
+
+.text-right {
+ text-align: right !important;
+}
+
+.text-center {
+ text-align: center !important;
+}
+
+.text-justify {
+ text-align: justify !important;
+}
+
+.hide {
+ display: none;
+}
+
+img,
+object,
+svg {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+textarea {
+ height: auto;
+ min-height: 50px;
+}
+
+select {
+ width: 100%;
+}
+
+.subheader,
+.admonitionblock td.content > .title,
+.audioblock > .title,
+.exampleblock > .title,
+.imageblock > .title,
+.listingblock > .title,
+.literalblock > .title,
+.stemblock > .title,
+.openblock > .title,
+.paragraph > .title,
+.quoteblock > .title,
+table.tableblock > .title,
+.verseblock > .title,
+.videoblock > .title,
+.dlist > .title,
+.olist > .title,
+.ulist > .title,
+.qlist > .title,
+.hdlist > .title {
+ line-height: 1.45;
+ color: #7a2518;
+ font-weight: 400;
+ margin-top: 0;
+ margin-bottom: 0.25em;
+}
+
+div,
+dl,
+dt,
+dd,
+ul,
+ol,
+li,
+h1,
+h2,
+h3,
+#toctitle,
+.sidebarblock > .content > .title,
+h4,
+h5,
+h6,
+pre,
+form,
+p,
+blockquote,
+th,
+td {
+ margin: 0;
+ padding: 0;
+}
+
+a {
+ color: #2156a5;
+ text-decoration: underline;
+ line-height: inherit;
+}
+
+a:hover,
+a:focus {
+ color: #1d4b8f;
+}
+
+a img {
+ border: 0;
+}
+
+p {
+ font-family: inherit;
+ font-weight: 400;
+ font-size: 1em;
+ line-height: 1.6;
+ margin-bottom: 1.25em;
+ text-rendering: optimizeLegibility;
+}
+
+p aside {
+ font-size: 0.875em;
+ line-height: 1.35;
+ font-style: italic;
+}
+
+h1,
+h2,
+h3,
+#toctitle,
+.sidebarblock > .content > .title,
+h4,
+h5,
+h6 {
+ font-family: "Open Sans", "DejaVu Sans", sans-serif;
+ font-weight: 300;
+ font-style: normal;
+ color: #ba3925;
+ text-rendering: optimizeLegibility;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ line-height: 1.0125em;
+}
+
+h1 small,
+h2 small,
+h3 small,
+#toctitle small,
+.sidebarblock > .content > .title small,
+h4 small,
+h5 small,
+h6 small {
+ font-size: 60%;
+ color: #e99b8f;
+ line-height: 0;
+}
+
+h1 {
+ font-size: 2.125em;
+}
+
+h2 {
+ font-size: 1.6875em;
+}
+
+h3,
+#toctitle,
+.sidebarblock > .content > .title {
+ font-size: 1.375em;
+}
+
+h4,
+h5 {
+ font-size: 1.125em;
+}
+
+h6 {
+ font-size: 1em;
+}
+
+hr {
+ border: solid #dddddf;
+ border-width: 1px 0 0;
+ clear: both;
+ margin: 1.25em 0 1.1875em;
+}
+
+em,
+i {
+ font-style: italic;
+ line-height: inherit;
+}
+
+strong,
+b {
+ font-weight: bold;
+ line-height: inherit;
+}
+
+small {
+ font-size: 60%;
+ line-height: inherit;
+}
+
+code {
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.9);
+}
+
+ul,
+ol,
+dl {
+ font-size: 1em;
+ line-height: 1.6;
+ margin-bottom: 1.25em;
+ list-style-position: outside;
+ font-family: inherit;
+}
+
+ul,
+ol {
+ margin-left: 1.5em;
+}
+
+ul li ul,
+ul li ol {
+ margin-left: 1.25em;
+ margin-bottom: 0;
+ font-size: 1em;
+}
+
+ul.square li ul,
+ul.circle li ul,
+ul.disc li ul {
+ list-style: inherit;
+}
+
+ul.square {
+ list-style-type: square;
+}
+
+ul.circle {
+ list-style-type: circle;
+}
+
+ul.disc {
+ list-style-type: disc;
+}
+
+ol li ul,
+ol li ol {
+ margin-left: 1.25em;
+ margin-bottom: 0;
+}
+
+dl dt {
+ margin-bottom: 0.3125em;
+ font-weight: bold;
+}
+
+dl dd {
+ margin-bottom: 1.25em;
+}
+
+abbr,
+acronym {
+ text-transform: uppercase;
+ font-size: 90%;
+ color: rgba(0, 0, 0, 0.8);
+ border-bottom: 1px dotted #ddd;
+ cursor: help;
+}
+
+abbr {
+ text-transform: none;
+}
+
+blockquote {
+ margin: 0 0 1.25em;
+ padding: 0.5625em 1.25em 0 1.1875em;
+ border-left: 1px solid #ddd;
+}
+
+blockquote,
+blockquote p {
+ line-height: 1.6;
+ color: rgba(0, 0, 0, 0.85);
+}
+
+@media screen and (min-width: 768px) {
+ h1,
+ h2,
+ h3,
+ #toctitle,
+ .sidebarblock > .content > .title,
+ h4,
+ h5,
+ h6 {
+ line-height: 1.2;
+ }
+
+ h1 {
+ font-size: 2.75em;
+ }
+
+ h2 {
+ font-size: 2.3125em;
+ }
+
+ h3,
+ #toctitle,
+ .sidebarblock > .content > .title {
+ font-size: 1.6875em;
+ }
+
+ h4 {
+ font-size: 1.4375em;
+ }
+}
+
+table {
+ background: #fff;
+ margin-bottom: 1.25em;
+ border: 1px solid #dedede;
+ word-wrap: normal;
+}
+
+table thead,
+table tfoot {
+ background: #f7f8f7;
+}
+
+table thead tr th,
+table thead tr td,
+table tfoot tr th,
+table tfoot tr td {
+ padding: 0.5em 0.625em 0.625em;
+ font-size: inherit;
+ color: rgba(0, 0, 0, 0.8);
+ text-align: left;
+}
+
+table tr th,
+table tr td {
+ padding: 0.5625em 0.625em;
+ font-size: inherit;
+ color: rgba(0, 0, 0, 0.8);
+}
+
+table tr.even,
+table tr.alt {
+ background: #f8f8f7;
+}
+
+table thead tr th,
+table tfoot tr th,
+table tbody tr td,
+table tr td,
+table tfoot tr td {
+ line-height: 1.6;
+}
+
+h1,
+h2,
+h3,
+#toctitle,
+.sidebarblock > .content > .title,
+h4,
+h5,
+h6 {
+ line-height: 1.2;
+ word-spacing: -0.05em;
+}
+
+h1 strong,
+h2 strong,
+h3 strong,
+#toctitle strong,
+.sidebarblock > .content > .title strong,
+h4 strong,
+h5 strong,
+h6 strong {
+ font-weight: 400;
+}
+
+.center {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.stretch {
+ width: 100%;
+}
+
+.clearfix::before,
+.clearfix::after,
+.float-group::before,
+.float-group::after {
+ content: " ";
+ display: table;
+}
+
+.clearfix::after,
+.float-group::after {
+ clear: both;
+}
+
+:not(pre).nobreak {
+ word-wrap: normal;
+}
+
+:not(pre).nowrap {
+ white-space: nowrap;
+}
+
+:not(pre).pre-wrap {
+ white-space: pre-wrap;
+}
+
+:not(pre):not([class^=L]) > code {
+ font-size: 0.9375em;
+ font-style: normal !important;
+ letter-spacing: 0;
+ padding: 0.1em 0.5ex;
+ word-spacing: -0.15em;
+ background: #f7f7f8;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ line-height: 1.45;
+ text-rendering: optimizeSpeed;
+}
+
+pre {
+ color: rgba(0, 0, 0, 0.9);
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
+ line-height: 1.45;
+ text-rendering: optimizeSpeed;
+}
+
+pre code,
+pre pre {
+ color: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+pre > code {
+ display: block;
+}
+
+pre.nowrap,
+pre.nowrap pre {
+ white-space: pre;
+ word-wrap: normal;
+}
+
+em em {
+ font-style: normal;
+}
+
+strong strong {
+ font-weight: 400;
+}
+
+.keyseq {
+ color: rgba(51, 51, 51, 0.8);
+}
+
+kbd {
+ font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace;
+ display: inline-block;
+ color: rgba(0, 0, 0, 0.8);
+ font-size: 0.65em;
+ line-height: 1.45;
+ background: #f7f7f7;
+ border: 1px solid #ccc;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em #fff inset;
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em #fff inset;
+ margin: 0 0.15em;
+ padding: 0.2em 0.5em;
+ vertical-align: middle;
+ position: relative;
+ top: -0.1em;
+ white-space: nowrap;
+}
+
+.keyseq kbd:first-child {
+ margin-left: 0;
+}
+
+.keyseq kbd:last-child {
+ margin-right: 0;
+}
+
+.menuseq,
+.menuref {
+ color: #000;
+}
+
+.menuseq b:not(.caret),
+.menuref {
+ font-weight: inherit;
+}
+
+.menuseq {
+ word-spacing: -0.02em;
+}
+
+.menuseq b.caret {
+ font-size: 1.25em;
+ line-height: 0.8;
+}
+
+.menuseq i.caret {
+ font-weight: bold;
+ text-align: center;
+ width: 0.45em;
+}
+
+b.button::before,
+b.button::after {
+ position: relative;
+ top: -1px;
+ font-weight: 400;
+}
+
+b.button::before {
+ content: "[";
+ padding: 0 3px 0 2px;
+}
+
+b.button::after {
+ content: "]";
+ padding: 0 2px 0 3px;
+}
+
+p a > code:hover {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+#header,
+#content,
+#footnotes,
+#footer {
+ width: 100%;
+ margin: 0 auto;
+ max-width: 62.5em;
+ *zoom: 1;
+ position: relative;
+ padding-left: 0.9375em;
+ padding-right: 0.9375em;
+}
+
+#header::before,
+#header::after,
+#content::before,
+#content::after,
+#footnotes::before,
+#footnotes::after,
+#footer::before,
+#footer::after {
+ content: " ";
+ display: table;
+}
+
+#header::after,
+#content::after,
+#footnotes::after,
+#footer::after {
+ clear: both;
+}
+
+#content {
+ margin-top: 1.25em;
+}
+
+#content::before {
+ content: none;
+}
+
+#header > h1:first-child {
+ color: rgba(0, 0, 0, 0.85);
+ margin-top: 2.25rem;
+ margin-bottom: 0;
+}
+
+#header > h1:first-child + #toc {
+ margin-top: 8px;
+ border-top: 1px solid #dddddf;
+}
+
+#header > h1:only-child,
+body.toc2 #header > h1:nth-last-child(2) {
+ border-bottom: 1px solid #dddddf;
+ padding-bottom: 8px;
+}
+
+#header .details {
+ border-bottom: 1px solid #dddddf;
+ line-height: 1.45;
+ padding-top: 0.25em;
+ padding-bottom: 0.25em;
+ padding-left: 0.25em;
+ color: rgba(0, 0, 0, 0.6);
+ display: -ms-flexbox;
+ display: -webkit-flex;
+ display: flex;
+ -ms-flex-flow: row wrap;
+ -webkit-flex-flow: row wrap;
+ flex-flow: row wrap;
+}
+
+#header .details span:first-child {
+ margin-left: -0.125em;
+}
+
+#header .details span.email a {
+ color: rgba(0, 0, 0, 0.85);
+}
+
+#header .details br {
+ display: none;
+}
+
+#header .details br + span::before {
+ content: "\00a0\2013\00a0";
+}
+
+#header .details br + span.author::before {
+ content: "\00a0\22c5\00a0";
+ color: rgba(0, 0, 0, 0.85);
+}
+
+#header .details br + span#revremark::before {
+ content: "\00a0|\00a0";
+}
+
+#header #revnumber {
+ text-transform: capitalize;
+}
+
+#header #revnumber::after {
+ content: "\00a0";
+}
+
+#content > h1:first-child:not([class]) {
+ color: rgba(0, 0, 0, 0.85);
+ border-bottom: 1px solid #dddddf;
+ padding-bottom: 8px;
+ margin-top: 0;
+ padding-top: 1rem;
+ margin-bottom: 1.25rem;
+}
+
+#toc {
+ border-bottom: 1px solid #e7e7e9;
+ padding-bottom: 0.5em;
+}
+
+#toc > ul {
+ margin-left: 0.125em;
+}
+
+#toc ul.sectlevel0 > li > a {
+ font-style: italic;
+}
+
+#toc ul.sectlevel0 ul.sectlevel1 {
+ margin: 0.5em 0;
+}
+
+#toc ul {
+ font-family: "Open Sans", "DejaVu Sans", sans-serif;
+ list-style-type: none;
+}
+
+#toc li {
+ line-height: 1.3334;
+ margin-top: 0.3334em;
+}
+
+#toc a {
+ text-decoration: none;
+}
+
+#toc a:active {
+ text-decoration: underline;
+}
+
+#toctitle {
+ color: #7a2518;
+ font-size: 1.2em;
+}
+
+@media screen and (min-width: 768px) {
+ #toctitle {
+ font-size: 1.375em;
+ }
+
+ body.toc2 {
+ padding-left: 15em;
+ padding-right: 0;
+ }
+
+ #toc.toc2 {
+ margin-top: 0 !important;
+ background: #f8f8f7;
+ position: fixed;
+ width: 15em;
+ left: 0;
+ top: 0;
+ border-right: 1px solid #e7e7e9;
+ border-top-width: 0 !important;
+ border-bottom-width: 0 !important;
+ z-index: 1000;
+ padding: 1.25em 1em;
+ height: 100%;
+ overflow: auto;
+ }
+
+ #toc.toc2 #toctitle {
+ margin-top: 0;
+ margin-bottom: 0.8rem;
+ font-size: 1.2em;
+ }
+
+ #toc.toc2 > ul {
+ font-size: 0.9em;
+ margin-bottom: 0;
+ }
+
+ #toc.toc2 ul ul {
+ margin-left: 0;
+ padding-left: 1em;
+ }
+
+ #toc.toc2 ul.sectlevel0 ul.sectlevel1 {
+ padding-left: 0;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+
+ body.toc2.toc-right {
+ padding-left: 0;
+ padding-right: 15em;
+ }
+
+ body.toc2.toc-right #toc.toc2 {
+ border-right-width: 0;
+ border-left: 1px solid #e7e7e9;
+ left: auto;
+ right: 0;
+ }
+}
+
+@media screen and (min-width: 1280px) {
+ body.toc2 {
+ padding-left: 20em;
+ padding-right: 0;
+ }
+
+ #toc.toc2 {
+ width: 20em;
+ }
+
+ #toc.toc2 #toctitle {
+ font-size: 1.375em;
+ }
+
+ #toc.toc2 > ul {
+ font-size: 0.95em;
+ }
+
+ #toc.toc2 ul ul {
+ padding-left: 1.25em;
+ }
+
+ body.toc2.toc-right {
+ padding-left: 0;
+ padding-right: 20em;
+ }
+}
+
+#content #toc {
+ border: 1px solid #e0e0dc;
+ margin-bottom: 1.25em;
+ padding: 1.25em;
+ background: #f8f8f7;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+}
+
+#content #toc > :first-child {
+ margin-top: 0;
+}
+
+#content #toc > :last-child {
+ margin-bottom: 0;
+}
+
+#footer {
+ max-width: none;
+ background: rgba(0, 0, 0, 0.8);
+ padding: 1.25em;
+}
+
+#footer-text {
+ color: rgba(255, 255, 255, 0.8);
+ line-height: 1.44;
+}
+
+#content {
+ margin-bottom: 0.625em;
+}
+
+.sect1 {
+ padding-bottom: 0.625em;
+}
+
+@media screen and (min-width: 768px) {
+ #content {
+ margin-bottom: 1.25em;
+ }
+
+ .sect1 {
+ padding-bottom: 1.25em;
+ }
+}
+
+.sect1:last-child {
+ padding-bottom: 0;
+}
+
+.sect1 + .sect1 {
+ border-top: 1px solid #e7e7e9;
+}
+
+#content h1 > a.anchor,
+h2 > a.anchor,
+h3 > a.anchor,
+#toctitle > a.anchor,
+.sidebarblock > .content > .title > a.anchor,
+h4 > a.anchor,
+h5 > a.anchor,
+h6 > a.anchor {
+ position: absolute;
+ z-index: 1001;
+ width: 1.5ex;
+ margin-left: -1.5ex;
+ display: block;
+ text-decoration: none !important;
+ visibility: hidden;
+ text-align: center;
+ font-weight: 400;
+}
+
+#content h1 > a.anchor::before,
+h2 > a.anchor::before,
+h3 > a.anchor::before,
+#toctitle > a.anchor::before,
+.sidebarblock > .content > .title > a.anchor::before,
+h4 > a.anchor::before,
+h5 > a.anchor::before,
+h6 > a.anchor::before {
+ content: "\00A7";
+ font-size: 0.85em;
+ display: block;
+ padding-top: 0.1em;
+}
+
+#content h1:hover > a.anchor,
+#content h1 > a.anchor:hover,
+h2:hover > a.anchor,
+h2 > a.anchor:hover,
+h3:hover > a.anchor,
+#toctitle:hover > a.anchor,
+.sidebarblock > .content > .title:hover > a.anchor,
+h3 > a.anchor:hover,
+#toctitle > a.anchor:hover,
+.sidebarblock > .content > .title > a.anchor:hover,
+h4:hover > a.anchor,
+h4 > a.anchor:hover,
+h5:hover > a.anchor,
+h5 > a.anchor:hover,
+h6:hover > a.anchor,
+h6 > a.anchor:hover {
+ visibility: visible;
+}
+
+#content h1 > a.link,
+h2 > a.link,
+h3 > a.link,
+#toctitle > a.link,
+.sidebarblock > .content > .title > a.link,
+h4 > a.link,
+h5 > a.link,
+h6 > a.link {
+ color: #ba3925;
+ text-decoration: none;
+}
+
+#content h1 > a.link:hover,
+h2 > a.link:hover,
+h3 > a.link:hover,
+#toctitle > a.link:hover,
+.sidebarblock > .content > .title > a.link:hover,
+h4 > a.link:hover,
+h5 > a.link:hover,
+h6 > a.link:hover {
+ color: #a53221;
+}
+
+details,
+.audioblock,
+.imageblock,
+.literalblock,
+.listingblock,
+.stemblock,
+.videoblock {
+ margin-bottom: 1.25em;
+}
+
+details > summary:first-of-type {
+ cursor: pointer;
+ display: list-item;
+ outline: none;
+ margin-bottom: 0.75em;
+}
+
+.admonitionblock td.content > .title,
+.audioblock > .title,
+.exampleblock > .title,
+.imageblock > .title,
+.listingblock > .title,
+.literalblock > .title,
+.stemblock > .title,
+.openblock > .title,
+.paragraph > .title,
+.quoteblock > .title,
+table.tableblock > .title,
+.verseblock > .title,
+.videoblock > .title,
+.dlist > .title,
+.olist > .title,
+.ulist > .title,
+.qlist > .title,
+.hdlist > .title {
+ text-rendering: optimizeLegibility;
+ text-align: left;
+ font-family: "Noto Serif", "DejaVu Serif", serif;
+ font-size: 1rem;
+ font-style: italic;
+}
+
+table.tableblock.fit-content > caption.title {
+ white-space: nowrap;
+ width: 0;
+}
+
+.paragraph.lead > p,
+#preamble > .sectionbody > [class=paragraph]:first-of-type p {
+ font-size: 1.21875em;
+ line-height: 1.6;
+ color: rgba(0, 0, 0, 0.85);
+}
+
+.admonitionblock > table {
+ border-collapse: separate;
+ border: 0;
+ background: none;
+ width: 100%;
+}
+
+.admonitionblock > table td.icon {
+ text-align: center;
+ width: 80px;
+}
+
+.admonitionblock > table td.icon img {
+ max-width: none;
+}
+
+.admonitionblock > table td.icon .title {
+ font-weight: bold;
+ font-family: "Open Sans", "DejaVu Sans", sans-serif;
+ text-transform: uppercase;
+}
+
+.admonitionblock > table td.content {
+ padding-left: 1.125em;
+ padding-right: 1.25em;
+ border-left: 1px solid #dddddf;
+ color: rgba(0, 0, 0, 0.6);
+ word-wrap: anywhere;
+}
+
+.admonitionblock > table td.content > :last-child > :last-child {
+ margin-bottom: 0;
+}
+
+.exampleblock > .content {
+ border: 1px solid #e6e6e6;
+ margin-bottom: 1.25em;
+ padding: 1.25em;
+ background: #fff;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.exampleblock > .content > :first-child {
+ margin-top: 0;
+}
+
+.exampleblock > .content > :last-child {
+ margin-bottom: 0;
+}
+
+.sidebarblock {
+ border: 1px solid #dbdbd6;
+ margin-bottom: 1.25em;
+ padding: 1.25em;
+ background: #f3f3f2;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.sidebarblock > :first-child {
+ margin-top: 0;
+}
+
+.sidebarblock > :last-child {
+ margin-bottom: 0;
+}
+
+.sidebarblock > .content > .title {
+ color: #7a2518;
+ margin-top: 0;
+ text-align: center;
+}
+
+.exampleblock > .content > :last-child > :last-child,
+.exampleblock > .content .olist > ol > li:last-child > :last-child,
+.exampleblock > .content .ulist > ul > li:last-child > :last-child,
+.exampleblock > .content .qlist > ol > li:last-child > :last-child,
+.sidebarblock > .content > :last-child > :last-child,
+.sidebarblock > .content .olist > ol > li:last-child > :last-child,
+.sidebarblock > .content .ulist > ul > li:last-child > :last-child,
+.sidebarblock > .content .qlist > ol > li:last-child > :last-child {
+ margin-bottom: 0;
+}
+
+.literalblock pre,
+.listingblock > .content > pre {
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ overflow-x: auto;
+ padding: 1em;
+ font-size: 0.8125em;
+}
+
+@media screen and (min-width: 768px) {
+ .literalblock pre,
+ .listingblock > .content > pre {
+ font-size: 0.90625em;
+ }
+}
+
+@media screen and (min-width: 1280px) {
+ .literalblock pre,
+ .listingblock > .content > pre {
+ font-size: 1em;
+ }
+}
+
+.literalblock pre,
+.listingblock > .content > pre:not(.highlight),
+.listingblock > .content > pre[class=highlight],
+.listingblock > .content > pre[class^="highlight "] {
+ background: #f7f7f8;
+}
+
+.literalblock.output pre {
+ color: #f7f7f8;
+ background: rgba(0, 0, 0, 0.9);
+}
+
+.listingblock > .content {
+ position: relative;
+}
+
+.listingblock code[data-lang]::before {
+ display: none;
+ content: attr(data-lang);
+ position: absolute;
+ font-size: 0.75em;
+ top: 0.425rem;
+ right: 0.5rem;
+ line-height: 1;
+ text-transform: uppercase;
+ color: inherit;
+ opacity: 0.5;
+}
+
+.listingblock:hover code[data-lang]::before {
+ display: block;
+}
+
+.listingblock.terminal pre .command::before {
+ content: attr(data-prompt);
+ padding-right: 0.5em;
+ color: inherit;
+ opacity: 0.5;
+}
+
+.listingblock.terminal pre .command:not([data-prompt])::before {
+ content: "$";
+}
+
+.listingblock pre.highlightjs {
+ padding: 0;
+}
+
+.listingblock pre.highlightjs > code {
+ padding: 1em;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.listingblock pre.prettyprint {
+ border-width: 0;
+}
+
+.prettyprint {
+ background: #f7f7f8;
+}
+
+pre.prettyprint .linenums {
+ line-height: 1.45;
+ margin-left: 2em;
+}
+
+pre.prettyprint li {
+ background: none;
+ list-style-type: inherit;
+ padding-left: 0;
+}
+
+pre.prettyprint li code[data-lang]::before {
+ opacity: 1;
+}
+
+pre.prettyprint li:not(:first-child) code[data-lang]::before {
+ display: none;
+}
+
+table.linenotable {
+ border-collapse: separate;
+ border: 0;
+ margin-bottom: 0;
+ background: none;
+}
+
+table.linenotable td[class] {
+ color: inherit;
+ vertical-align: top;
+ padding: 0;
+ line-height: inherit;
+ white-space: normal;
+}
+
+table.linenotable td.code {
+ padding-left: 0.75em;
+}
+
+table.linenotable td.linenos {
+ border-right: 1px solid;
+ opacity: 0.35;
+ padding-right: 0.5em;
+}
+
+pre.pygments .lineno {
+ border-right: 1px solid;
+ opacity: 0.35;
+ display: inline-block;
+ margin-right: 0.75em;
+}
+
+pre.pygments .lineno::before {
+ content: "";
+ margin-right: -0.125em;
+}
+
+.quoteblock {
+ margin: 0 1em 1.25em 1.5em;
+ display: table;
+}
+
+.quoteblock:not(.excerpt) > .title {
+ margin-left: -1.5em;
+ margin-bottom: 0.75em;
+}
+
+.quoteblock blockquote,
+.quoteblock p {
+ color: rgba(0, 0, 0, 0.85);
+ font-size: 1.15rem;
+ line-height: 1.75;
+ word-spacing: 0.1em;
+ letter-spacing: 0;
+ font-style: italic;
+ text-align: justify;
+}
+
+.quoteblock blockquote {
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+
+.quoteblock blockquote::before {
+ content: "\201c";
+ float: left;
+ font-size: 2.75em;
+ font-weight: bold;
+ line-height: 0.6em;
+ margin-left: -0.6em;
+ color: #7a2518;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.quoteblock blockquote > .paragraph:last-child p {
+ margin-bottom: 0;
+}
+
+.quoteblock .attribution {
+ margin-top: 0.75em;
+ margin-right: 0.5ex;
+ text-align: right;
+}
+
+.verseblock {
+ margin: 0 1em 1.25em;
+}
+
+.verseblock pre {
+ font-family: "Open Sans", "DejaVu Sans", sans-serif;
+ font-size: 1.15rem;
+ color: rgba(0, 0, 0, 0.85);
+ font-weight: 300;
+ text-rendering: optimizeLegibility;
+}
+
+.verseblock pre strong {
+ font-weight: 400;
+}
+
+.verseblock .attribution {
+ margin-top: 1.25rem;
+ margin-left: 0.5ex;
+}
+
+.quoteblock .attribution,
+.verseblock .attribution {
+ font-size: 0.9375em;
+ line-height: 1.45;
+ font-style: italic;
+}
+
+.quoteblock .attribution br,
+.verseblock .attribution br {
+ display: none;
+}
+
+.quoteblock .attribution cite,
+.verseblock .attribution cite {
+ display: block;
+ letter-spacing: -0.025em;
+ color: rgba(0, 0, 0, 0.6);
+}
+
+.quoteblock.abstract blockquote::before,
+.quoteblock.excerpt blockquote::before,
+.quoteblock .quoteblock blockquote::before {
+ display: none;
+}
+
+.quoteblock.abstract blockquote,
+.quoteblock.abstract p,
+.quoteblock.excerpt blockquote,
+.quoteblock.excerpt p,
+.quoteblock .quoteblock blockquote,
+.quoteblock .quoteblock p {
+ line-height: 1.6;
+ word-spacing: 0;
+}
+
+.quoteblock.abstract {
+ margin: 0 1em 1.25em;
+ display: block;
+}
+
+.quoteblock.abstract > .title {
+ margin: 0 0 0.375em;
+ font-size: 1.15em;
+ text-align: center;
+}
+
+.quoteblock.excerpt > blockquote,
+.quoteblock .quoteblock {
+ padding: 0 0 0.25em 1em;
+ border-left: 0.25em solid #dddddf;
+}
+
+.quoteblock.excerpt,
+.quoteblock .quoteblock {
+ margin-left: 0;
+}
+
+.quoteblock.excerpt blockquote,
+.quoteblock.excerpt p,
+.quoteblock .quoteblock blockquote,
+.quoteblock .quoteblock p {
+ color: inherit;
+ font-size: 1.0625rem;
+}
+
+.quoteblock.excerpt .attribution,
+.quoteblock .quoteblock .attribution {
+ color: inherit;
+ font-size: 0.85rem;
+ text-align: left;
+ margin-right: 0;
+}
+
+p.tableblock:last-child {
+ margin-bottom: 0;
+}
+
+td.tableblock > .content {
+ margin-bottom: 1.25em;
+ word-wrap: anywhere;
+}
+
+td.tableblock > .content > :last-child {
+ margin-bottom: -1.25em;
+}
+
+table.tableblock,
+th.tableblock,
+td.tableblock {
+ border: 0 solid #dedede;
+}
+
+table.grid-all > * > tr > * {
+ border-width: 1px;
+}
+
+table.grid-cols > * > tr > * {
+ border-width: 0 1px;
+}
+
+table.grid-rows > * > tr > * {
+ border-width: 1px 0;
+}
+
+table.frame-all {
+ border-width: 1px;
+}
+
+table.frame-ends {
+ border-width: 1px 0;
+}
+
+table.frame-sides {
+ border-width: 0 1px;
+}
+
+table.frame-none > colgroup + * > :first-child > *,
+table.frame-sides > colgroup + * > :first-child > * {
+ border-top-width: 0;
+}
+
+table.frame-none > :last-child > :last-child > *,
+table.frame-sides > :last-child > :last-child > * {
+ border-bottom-width: 0;
+}
+
+table.frame-none > * > tr > :first-child,
+table.frame-ends > * > tr > :first-child {
+ border-left-width: 0;
+}
+
+table.frame-none > * > tr > :last-child,
+table.frame-ends > * > tr > :last-child {
+ border-right-width: 0;
+}
+
+table.stripes-all tr,
+table.stripes-odd tr:nth-of-type(odd),
+table.stripes-even tr:nth-of-type(even),
+table.stripes-hover tr:hover {
+ background: #f8f8f7;
+}
+
+th.halign-left,
+td.halign-left {
+ text-align: left;
+}
+
+th.halign-right,
+td.halign-right {
+ text-align: right;
+}
+
+th.halign-center,
+td.halign-center {
+ text-align: center;
+}
+
+th.valign-top,
+td.valign-top {
+ vertical-align: top;
+}
+
+th.valign-bottom,
+td.valign-bottom {
+ vertical-align: bottom;
+}
+
+th.valign-middle,
+td.valign-middle {
+ vertical-align: middle;
+}
+
+table thead th,
+table tfoot th {
+ font-weight: bold;
+}
+
+tbody tr th {
+ background: #f7f8f7;
+}
+
+tbody tr th,
+tbody tr th p,
+tfoot tr th,
+tfoot tr th p {
+ color: rgba(0, 0, 0, 0.8);
+ font-weight: bold;
+}
+
+p.tableblock > code:only-child {
+ background: none;
+ padding: 0;
+}
+
+p.tableblock {
+ font-size: 1em;
+}
+
+ol {
+ margin-left: 1.75em;
+}
+
+ul li ol {
+ margin-left: 1.5em;
+}
+
+dl dd {
+ margin-left: 1.125em;
+}
+
+dl dd:last-child,
+dl dd:last-child > :last-child {
+ margin-bottom: 0;
+}
+
+ol > li p,
+ul > li p,
+ul dd,
+ol dd,
+.olist .olist,
+.ulist .ulist,
+.ulist .olist,
+.olist .ulist {
+ margin-bottom: 0.625em;
+}
+
+ul.checklist,
+ul.none,
+ol.none,
+ul.no-bullet,
+ol.no-bullet,
+ol.unnumbered,
+ul.unstyled,
+ol.unstyled {
+ list-style-type: none;
+}
+
+ul.no-bullet,
+ol.no-bullet,
+ol.unnumbered {
+ margin-left: 0.625em;
+}
+
+ul.unstyled,
+ol.unstyled {
+ margin-left: 0;
+}
+
+ul.checklist > li > p:first-child {
+ margin-left: -1em;
+}
+
+ul.checklist > li > p:first-child > .fa-square-o:first-child,
+ul.checklist > li > p:first-child > .fa-check-square-o:first-child {
+ width: 1.25em;
+ font-size: 0.8em;
+ position: relative;
+ bottom: 0.125em;
+}
+
+ul.checklist > li > p:first-child > input[type=checkbox]:first-child {
+ margin-right: 0.25em;
+}
+
+ul.inline {
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: flex;
+ -ms-flex-flow: row wrap;
+ -webkit-flex-flow: row wrap;
+ flex-flow: row wrap;
+ list-style: none;
+ margin: 0 0 0.625em -1.25em;
+}
+
+ul.inline > li {
+ margin-left: 1.25em;
+}
+
+.unstyled dl dt {
+ font-weight: 400;
+ font-style: normal;
+}
+
+ol.arabic {
+ list-style-type: decimal;
+}
+
+ol.decimal {
+ list-style-type: decimal-leading-zero;
+}
+
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+ol.lowergreek {
+ list-style-type: lower-greek;
+}
+
+.hdlist > table,
+.colist > table {
+ border: 0;
+ background: none;
+}
+
+.hdlist > table > tbody > tr,
+.colist > table > tbody > tr {
+ background: none;
+}
+
+td.hdlist1,
+td.hdlist2 {
+ vertical-align: top;
+ padding: 0 0.625em;
+}
+
+td.hdlist1 {
+ font-weight: bold;
+ padding-bottom: 1.25em;
+}
+
+td.hdlist2 {
+ word-wrap: anywhere;
+}
+
+.literalblock + .colist,
+.listingblock + .colist {
+ margin-top: -0.5em;
+}
+
+.colist td:not([class]):first-child {
+ padding: 0.4em 0.75em 0;
+ line-height: 1;
+ vertical-align: top;
+}
+
+.colist td:not([class]):first-child img {
+ max-width: none;
+}
+
+.colist td:not([class]):last-child {
+ padding: 0.25em 0;
+}
+
+.thumb,
+.th {
+ line-height: 0;
+ display: inline-block;
+ border: 4px solid #fff;
+ -webkit-box-shadow: 0 0 0 1px #ddd;
+ box-shadow: 0 0 0 1px #ddd;
+}
+
+.imageblock.left {
+ margin: 0.25em 0.625em 1.25em 0;
+}
+
+.imageblock.right {
+ margin: 0.25em 0 1.25em 0.625em;
+}
+
+.imageblock > .title {
+ margin-bottom: 0;
+}
+
+.imageblock.thumb,
+.imageblock.th {
+ border-width: 6px;
+}
+
+.imageblock.thumb > .title,
+.imageblock.th > .title {
+ padding: 0 0.125em;
+}
+
+.image.left,
+.image.right {
+ margin-top: 0.25em;
+ margin-bottom: 0.25em;
+ display: inline-block;
+ line-height: 0;
+}
+
+.image.left {
+ margin-right: 0.625em;
+}
+
+.image.right {
+ margin-left: 0.625em;
+}
+
+a.image {
+ text-decoration: none;
+ display: inline-block;
+}
+
+a.image object {
+ pointer-events: none;
+}
+
+sup.footnote,
+sup.footnoteref {
+ font-size: 0.875em;
+ position: static;
+ vertical-align: super;
+}
+
+sup.footnote a,
+sup.footnoteref a {
+ text-decoration: none;
+}
+
+sup.footnote a:active,
+sup.footnoteref a:active {
+ text-decoration: underline;
+}
+
+#footnotes {
+ padding-top: 0.75em;
+ padding-bottom: 0.75em;
+ margin-bottom: 0.625em;
+}
+
+#footnotes hr {
+ width: 20%;
+ min-width: 6.25em;
+ margin: -0.25em 0 0.75em;
+ border-width: 1px 0 0;
+}
+
+#footnotes .footnote {
+ padding: 0 0.375em 0 0.225em;
+ line-height: 1.3334;
+ font-size: 0.875em;
+ margin-left: 1.2em;
+ margin-bottom: 0.2em;
+}
+
+#footnotes .footnote a:first-of-type {
+ font-weight: bold;
+ text-decoration: none;
+ margin-left: -1.05em;
+}
+
+#footnotes .footnote:last-of-type {
+ margin-bottom: 0;
+}
+
+#content #footnotes {
+ margin-top: -0.625em;
+ margin-bottom: 0;
+ padding: 0.75em 0;
+}
+
+.gist .file-data > table {
+ border: 0;
+ background: #fff;
+ width: 100%;
+ margin-bottom: 0;
+}
+
+.gist .file-data > table td.line-data {
+ width: 99%;
+}
+
+div.unbreakable {
+ page-break-inside: avoid;
+}
+
+.big {
+ font-size: larger;
+}
+
+.small {
+ font-size: smaller;
+}
+
+.underline {
+ text-decoration: underline;
+}
+
+.overline {
+ text-decoration: overline;
+}
+
+.line-through {
+ text-decoration: line-through;
+}
+
+.aqua {
+ color: #00bfbf;
+}
+
+.aqua-background {
+ background: #00fafa;
+}
+
+.black {
+ color: #000;
+}
+
+.black-background {
+ background: #000;
+}
+
+.blue {
+ color: #0000bf;
+}
+
+.blue-background {
+ background: #0000fa;
+}
+
+.fuchsia {
+ color: #bf00bf;
+}
+
+.fuchsia-background {
+ background: #fa00fa;
+}
+
+.gray {
+ color: #606060;
+}
+
+.gray-background {
+ background: #7d7d7d;
+}
+
+.green {
+ color: #006000;
+}
+
+.green-background {
+ background: #007d00;
+}
+
+.lime {
+ color: #00bf00;
+}
+
+.lime-background {
+ background: #00fa00;
+}
+
+.maroon {
+ color: #600000;
+}
+
+.maroon-background {
+ background: #7d0000;
+}
+
+.navy {
+ color: #000060;
+}
+
+.navy-background {
+ background: #00007d;
+}
+
+.olive {
+ color: #606000;
+}
+
+.olive-background {
+ background: #7d7d00;
+}
+
+.purple {
+ color: #600060;
+}
+
+.purple-background {
+ background: #7d007d;
+}
+
+.red {
+ color: #bf0000;
+}
+
+.red-background {
+ background: #fa0000;
+}
+
+.silver {
+ color: #909090;
+}
+
+.silver-background {
+ background: #bcbcbc;
+}
+
+.teal {
+ color: #006060;
+}
+
+.teal-background {
+ background: #007d7d;
+}
+
+.white {
+ color: #bfbfbf;
+}
+
+.white-background {
+ background: #fafafa;
+}
+
+.yellow {
+ color: #bfbf00;
+}
+
+.yellow-background {
+ background: #fafa00;
+}
+
+span.icon > .fa {
+ cursor: default;
+}
+
+a span.icon > .fa {
+ cursor: inherit;
+}
+
+.admonitionblock td.icon [class^="fa icon-"] {
+ font-size: 2.5em;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
+ cursor: default;
+}
+
+.admonitionblock td.icon .icon-note::before {
+ content: "\f05a";
+ color: #19407c;
+}
+
+.admonitionblock td.icon .icon-tip::before {
+ content: "\f0eb";
+ text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8);
+ color: #111;
+}
+
+.admonitionblock td.icon .icon-warning::before {
+ content: "\f071";
+ color: #bf6900;
+}
+
+.admonitionblock td.icon .icon-caution::before {
+ content: "\f06d";
+ color: #bf3400;
+}
+
+.admonitionblock td.icon .icon-important::before {
+ content: "\f06a";
+ color: #bf0000;
+}
+
+.conum[data-value] {
+ display: inline-block;
+ color: #fff !important;
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-border-radius: 50%;
+ border-radius: 50%;
+ text-align: center;
+ font-size: 0.75em;
+ width: 1.67em;
+ height: 1.67em;
+ line-height: 1.67em;
+ font-family: "Open Sans", "DejaVu Sans", sans-serif;
+ font-style: normal;
+ font-weight: bold;
+}
+
+.conum[data-value] * {
+ color: #fff !important;
+}
+
+.conum[data-value] + b {
+ display: none;
+}
+
+.conum[data-value]::after {
+ content: attr(data-value);
+}
+
+pre .conum[data-value] {
+ position: relative;
+ top: -0.125em;
+}
+
+b.conum * {
+ color: inherit !important;
+}
+
+.conum:not([data-value]):empty {
+ display: none;
+}
+
+dt,
+th.tableblock,
+td.content,
+div.footnote {
+ text-rendering: optimizeLegibility;
+}
+
+h1,
+h2,
+p,
+td.content,
+span.alt {
+ letter-spacing: -0.01em;
+}
+
+p strong,
+td.content strong,
+div.footnote strong {
+ letter-spacing: -0.005em;
+}
+
+p,
+blockquote,
+dt,
+td.content,
+span.alt {
+ font-size: 1.0625rem;
+}
+
+p {
+ margin-bottom: 1.25rem;
+}
+
+.sidebarblock p,
+.sidebarblock dt,
+.sidebarblock td.content,
+p.tableblock {
+ font-size: 1em;
+}
+
+.exampleblock > .content {
+ background: #fffef7;
+ border-color: #e0e0dc;
+ -webkit-box-shadow: 0 1px 4px #e0e0dc;
+ box-shadow: 0 1px 4px #e0e0dc;
+}
+
+.print-only {
+ display: none !important;
+}
+
+@page {
+ margin: 1.25cm 0.75cm;
+}
+
+@media print {
+ * {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+ text-shadow: none !important;
+ }
+
+ html {
+ font-size: 80%;
+ }
+
+ a {
+ color: inherit !important;
+ text-decoration: underline !important;
+ }
+
+ a.bare,
+ a[href^="#"],
+ a[href^="mailto:"] {
+ text-decoration: none !important;
+ }
+
+ a[href^="http:"]:not(.bare)::after,
+ a[href^="https:"]:not(.bare)::after {
+ content: "(" attr(href) ")";
+ display: inline-block;
+ font-size: 0.875em;
+ padding-left: 0.25em;
+ }
+
+ abbr[title]::after {
+ content: " (" attr(title) ")";
+ }
+
+ pre,
+ blockquote,
+ tr,
+ img,
+ object,
+ svg {
+ page-break-inside: avoid;
+ }
+
+ thead {
+ display: table-header-group;
+ }
+
+ svg {
+ max-width: 100%;
+ }
+
+ p,
+ blockquote,
+ dt,
+ td.content {
+ font-size: 1em;
+ orphans: 3;
+ widows: 3;
+ }
+
+ h2,
+ h3,
+ #toctitle,
+ .sidebarblock > .content > .title {
+ page-break-after: avoid;
+ }
+
+ #header,
+ #content,
+ #footnotes,
+ #footer {
+ max-width: none;
+ }
+
+ #toc,
+ .sidebarblock,
+ .exampleblock > .content {
+ background: none !important;
+ }
+
+ #toc {
+ border-bottom: 1px solid #dddddf !important;
+ padding-bottom: 0 !important;
+ }
+
+ body.book #header {
+ text-align: center;
+ }
+
+ body.book #header > h1:first-child {
+ border: 0 !important;
+ margin: 2.5em 0 1em;
+ }
+
+ body.book #header .details {
+ border: 0 !important;
+ display: block;
+ padding: 0 !important;
+ }
+
+ body.book #header .details span:first-child {
+ margin-left: 0 !important;
+ }
+
+ body.book #header .details br {
+ display: block;
+ }
+
+ body.book #header .details br + span::before {
+ content: none !important;
+ }
+
+ body.book #toc {
+ border: 0 !important;
+ text-align: left !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ }
+
+ body.book #toc,
+ body.book #preamble,
+ body.book h1.sect0,
+ body.book .sect1 > h2 {
+ page-break-before: always;
+ }
+
+ .listingblock code[data-lang]::before {
+ display: block;
+ }
+
+ #footer {
+ padding: 0 0.9375em;
+ }
+
+ .hide-on-print {
+ display: none !important;
+ }
+
+ .print-only {
+ display: block !important;
+ }
+
+ .hide-for-print {
+ display: none !important;
+ }
+
+ .show-for-print {
+ display: inherit !important;
+ }
+}
+
+@media amzn-kf8, print {
+ #header > h1:first-child {
+ margin-top: 1.25rem;
+ }
+
+ .sect1 {
+ padding: 0 !important;
+ }
+
+ .sect1 + .sect1 {
+ border: 0;
+ }
+
+ #footer {
+ background: none;
+ }
+
+ #footer-text {
+ color: rgba(0, 0, 0, 0.6);
+ font-size: 0.9em;
+ }
+}
+
+@media amzn-kf8 {
+ #header,
+ #content,
+ #footnotes,
+ #footer {
+ padding: 0;
+ }
+}
diff --git a/src/stylesheets/lib/postcss-minify-selectors.js b/src/stylesheets/lib/postcss-minify-selectors.js
new file mode 100644
index 00000000..6571c0ce
--- /dev/null
+++ b/src/stylesheets/lib/postcss-minify-selectors.js
@@ -0,0 +1,24 @@
+'use strict'
+
+const selectorParser = require('postcss-selector-parser')
+
+/**
+ * Replaces the official postcss-minify-selectors plugin with a simpler implementation.
+ *
+ * The official plugin sorts the selectors and mangles pseudo-elements.
+ * This simpler plugin only removes space characters and unnecessary quotes.
+ */
+module.exports = (opts) => {
+ return {
+ postcssPlugin: 'postcss-minify-selectors',
+ Rule (rule) {
+ rule.selector = selectorParser((selectors) => {
+ selectors.walkAttributes((attr) => {
+ if (attr.value) attr.raws.value = attr.getQuotedValue({ smart: true })
+ })
+ }).processSync(rule.selector, { lossless: false })
+ },
+ }
+}
+
+module.exports.postcss = true
diff --git a/src/stylesheets/lib/postcss-rule-per-line.js b/src/stylesheets/lib/postcss-rule-per-line.js
new file mode 100644
index 00000000..d85f5aa6
--- /dev/null
+++ b/src/stylesheets/lib/postcss-rule-per-line.js
@@ -0,0 +1,18 @@
+'use strict'
+
+/**
+ * Makes the minified stylesheet more readable by putting each rule on its own line and adding a trailing newline.
+ */
+module.exports = (opts) => {
+ return {
+ postcssPlugin: 'postcss-rule-per-line',
+ OnceExit (root) {
+ root.walk((node) => {
+ if (node.type.endsWith('rule') && node.prev()) node.raws.before = '\n'
+ })
+ root.raws.after = '\n'
+ },
+ }
+}
+
+module.exports.postcss = true
diff --git a/src/stylesheets/package.json b/src/stylesheets/package.json
new file mode 100644
index 00000000..ef0bd69b
--- /dev/null
+++ b/src/stylesheets/package.json
@@ -0,0 +1,15 @@
+{
+ "private": true,
+ "description": "Compiles the default stylesheet for the built-in HTML converter.",
+ "dependencies": {
+ "cssnano": "~5.0",
+ "postcss": "~8.2",
+ "postcss-cli": "~8.3",
+ "stylelint": "~13.13",
+ "stylelint-config-standard": "~22.0"
+ },
+ "scripts": {
+ "build": "postcss asciidoctor.css -o ../../data/stylesheets/asciidoctor-default.css",
+ "lint": "stylelint asciidoctor.css"
+ }
+}
diff --git a/src/stylesheets/postcss.config.js b/src/stylesheets/postcss.config.js
new file mode 100644
index 00000000..15e2b612
--- /dev/null
+++ b/src/stylesheets/postcss.config.js
@@ -0,0 +1,20 @@
+module.exports = (ctx) => ({
+ plugins: {
+ cssnano: {
+ // refer to https://cssnano.co/docs/optimisations to understand this preset
+ preset: [
+ 'default',
+ {
+ discardComments: { exclude: true }, // comments are currently aimed at the user, so keep them
+ minifySelectors: { exclude: true }, // replaced by ./lib/postcss-minify-selectors.js
+ minifyFontValues: { exclude: true }, // switches to numeric font weights, which make the stylesheet less extensible
+ mergeRules: { exclude: true }, // TODO reenable; currently causes non-functional differences in output
+ uniqueSelectors: { exclude: true }, // reorders selectors, which doesn't improve minification
+ cssDeclarationSorter: { exclude: true }, // reorders properties, which doesn't improve minification
+ },
+ ]
+ },
+ './lib/postcss-minify-selectors.js': true,
+ './lib/postcss-rule-per-line.js': true,
+ }
+})