├── .dockerignore ├── lib ├── asciibuild.rb └── asciibuild │ └── extensions.rb ├── doc ├── asciibuild_error.jpg ├── asciibuild_skipped.jpg ├── DOCKER.adoc ├── BUILD.adoc └── USAGE.adoc ├── Gemfile ├── .gitignore ├── .travis.yml ├── Makefile ├── asciibuild.gemspec ├── test ├── build-essential.Dockerfile └── test-block-processor.adoc ├── README.adoc ├── bin └── asciibuild └── stylesheets ├── foundation.css ├── rubygems.css ├── colony.css ├── foundation-potion.css └── foundation-lime.css /.dockerignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | abuild 3 | build 4 | .git 5 | -------------------------------------------------------------------------------- /lib/asciibuild.rb: -------------------------------------------------------------------------------- 1 | require_relative 'asciibuild/extensions' 2 | -------------------------------------------------------------------------------- /doc/asciibuild_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jbrisbin/asciibuild/HEAD/doc/asciibuild_error.jpg -------------------------------------------------------------------------------- /doc/asciibuild_skipped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jbrisbin/asciibuild/HEAD/doc/asciibuild_skipped.jpg -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'asciidoctor', '~> 1.5' 4 | gem 'pygments.rb', '~> 0.6' 5 | gem 'mustache', '~> 1.0' 6 | 7 | gemspec 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .bundle 3 | target 4 | build 5 | .idea 6 | *.iml 7 | *.gem 8 | *.erl 9 | /doc/*.html 10 | /test/*.html 11 | /Dockerfile 12 | metastore_db 13 | *.lock 14 | *.log 15 | abuild/ 16 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.2.0 4 | - 2.0.0 5 | 6 | services: 7 | - docker 8 | 9 | before_script: 10 | - curl -q -sSL http://d3kbcqa49mib13.cloudfront.net/spark-1.6.2-bin-hadoop2.6.tgz | tar -zxf - -C /opt 11 | 12 | script: 13 | - make test 14 | 15 | env: 16 | global: 17 | - SPARK_HOME=/opt/spark-1.6.2-bin-hadoop2.6 18 | - PATH=$SPARK_HOME/bin:$PATH 19 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | RUN ?= true 2 | OPTS ?= 3 | 4 | SRC = $(shell find lib -name *.rb -print) bin/asciibuild 5 | 6 | .PHONY: all clean gem install test 7 | 8 | clean: 9 | rm -Rf *.gem vendor *.log metastore_db Dockerfile Gemfile.lock abuild 10 | gem uninstall -ax asciibuild 11 | 12 | gem: clean asciibuild.gemspec $(SRC) 13 | gem build ./asciibuild.gemspec 14 | gem install ./asciibuild-*.gem -l 15 | 16 | install: clean asciibuild.gemspec $(SRC) 17 | bundle install 18 | 19 | test: install 20 | bundle exec asciibuild -a run=$(RUN) -a greeting $(OPTS) -r Linux test/test-block-processor.adoc 21 | 22 | all: install 23 | -------------------------------------------------------------------------------- /asciibuild.gemspec: -------------------------------------------------------------------------------- 1 | Gem::Specification.new do |s| 2 | s.name = 'asciibuild' 3 | s.version = '0.10.0' 4 | s.date = '2016-10-18' 5 | s.summary = "Process orchestrator based on Asciidoc" 6 | s.description = "Orchestrate and document processes by inlining executable code into an Asciidoc document" 7 | s.authors = ["Jon Brisbin"] 8 | s.email = 'jon@jbrisbin.com' 9 | s.files = [ 10 | "lib/asciibuild.rb", 11 | "lib/asciibuild/extensions.rb", 12 | "stylesheets/colony.css" 13 | ] 14 | s.executables = ["asciibuild"] 15 | s.homepage = 'http://github.com/jbrisbin/asciibuild' 16 | s.license = 'Apache-2.0' 17 | s.require_paths = ["lib"] 18 | 19 | s.add_dependency "asciidoctor", "~> 1.5" 20 | s.add_dependency "pygments.rb", "~> 0.6" 21 | s.add_dependency "mustache", "~> 1.0" 22 | end 23 | -------------------------------------------------------------------------------- /test/build-essential.Dockerfile: -------------------------------------------------------------------------------- 1 | # tag::alpine[] 2 | ENV \ 3 | OS_FAMILY=alpine \ 4 | OS_VERSION=3.4 \ 5 | OS_FLAVOR=x86_64 6 | # end::alpine[] 7 | 8 | # Install build-essential 9 | # tag::alpine[] 10 | RUN apk add --no-cache build-base openssh-client openssl openssl-dev git curl wget python-dev libffi-dev py-pip cyrus-sasl cyrus-sasl-dev ca-certificates ruby-rake ruby-dev ruby-rdoc jq which tar bash 11 | RUN curl -sSL -o /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub 12 | RUN curl -sSL -O https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.23-r3/glibc-2.23-r3.apk 13 | RUN apk add glibc-2.23-r3.apk 14 | # end::alpine[] 15 | # tag::ubuntu[] 16 | RUN apt-get update 17 | RUN apt-get install -qy openssl libssl-dev tar git wget curl vim build-essential autoconf automake libtool python-dev python-pip libsasl2-dev libsasl2-modules libapr1-dev libffi-dev apt-transport-https ca-certificates iputils-ping realpath rake ruby-dev jq 18 | # end::ubuntu[] 19 | 20 | # Install Docker 21 | # tag::alpine[] 22 | RUN apk add --no-cache docker 23 | # end::alpine[] 24 | # tag::ubuntu[] 25 | RUN curl -fsSL https://get.docker.com/ | sh 26 | # end::ubuntu[] 27 | 28 | # tag::common[] 29 | RUN curl -L -o /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.8.0-rc1/docker-compose-Linux-x86_64 30 | RUN chmod a+x /usr/local/bin/docker-compose 31 | # end::common[] 32 | -------------------------------------------------------------------------------- /README.adoc: -------------------------------------------------------------------------------- 1 | = asciibuild - Literate Programming extensions for Asciidoctor 2 | Jon Brisbin 3 | 4 | `asciibuild` is an extension to http://asciidoctor.org[Asciidoctor] that enables https://en.wikipedia.org/wiki/Literate_programming[literate programming] with Asciidoc. It turns the `listing` block into executable code. When you run `asciibuild` on an `.adoc` file that has listing blocks styled with the `[asciibuild]` style, those listing blocks will be executed as they are evaluated by Asciidoctor. 5 | 6 | *Think* of `asciibuild` as a simple Notebook. It doesn't require anything but a text editor to create or edit and only command-line tools to run. It allows you put everything related to a process--whether build, test, or orchestration--into source control and lets you use your existing tools and CI/CD workflows. 7 | 8 | *Use* `asciibuild` to create full builds, aggregate projects of different kinds that use entirely different build systems, mix multiple languages together in a single `.adoc` file, or create examples and test suites that intermingle the code under test with documentation _about_ the tests. 9 | 10 | image:https://travis-ci.org/jbrisbin/asciibuild.svg[link="https://travis-ci.org/jbrisbin/asciibuild/"] 11 | 12 | == Sections 13 | 14 | Documentation is broken up into the following sections: 15 | 16 | include::doc/BUILD.adoc[] 17 | 18 | include::doc/USAGE.adoc[] 19 | 20 | include::doc/DOCKER.adoc[] 21 | 22 | == LICENSE 23 | 24 | `asciibuild` is licensed under the http://www.apache.org/licenses/LICENSE-2.0.txt[Apache 2.0 license]. 25 | -------------------------------------------------------------------------------- /bin/asciibuild: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'optparse' 3 | require 'asciibuild' 4 | 5 | def find_stylesheet name 6 | File.expand_path "../stylesheets/#{name}.css", File.dirname(__FILE__) 7 | end 8 | 9 | attrs = { 10 | "pwd" => Dir.pwd, 11 | "toc" => "left", 12 | "toclevels" => "4", 13 | "sectlinks" => true, 14 | "icons" => "font", 15 | "stylesheet" => find_stylesheet("colony"), 16 | "source-highlighter" => "pygments" 17 | } 18 | 19 | options = { 20 | :safe => 0, 21 | :verbose => 2, 22 | :to_dir => "abuild", 23 | :mkdirs => true, 24 | :attributes => attrs 25 | } 26 | 27 | OptionParser.new do |opts| 28 | opts.banner = "Usage: asciibuild [options] file.adoc..." 29 | 30 | opts.on('-d', '--outdir DIR', 'Directory to output processed documents to') do |d| 31 | options[:to_dir] = d 32 | end 33 | opts.on('-s', '--stylesheet NAME', 'Stylesheet name') do |v| 34 | attrs["stylesheet"] = find_stylesheet(v) 35 | end 36 | opts.on('-a', '--attribute ATTR', 'Document attribute') do |a| 37 | parts = a.split(/=/) 38 | k = parts[0] 39 | v = if parts.size > 1 then parts[1] else true end 40 | if attrs[k] and attrs[k].class == Array 41 | entry << v 42 | elsif attrs[k] 43 | attrs[k] = [attrs[k], v] 44 | else 45 | attrs[k] = v 46 | end 47 | end 48 | opts.on('-r', '--redact PATT', 'Regex pattern of text to redact from output and replace with [****]') do |r| 49 | if not attrs['redact'] 50 | attrs['redact'] = [r] 51 | else 52 | attrs['redact'] << r 53 | end 54 | end 55 | end.parse! 56 | 57 | ARGV.each do |f| 58 | basename = File.basename f, ".*" 59 | dirname = File.dirname f 60 | basedir = File.join options[:to_dir], dirname 61 | options[:to_dir] = basedir 62 | attrs["outdir"] = basedir 63 | outfile = "#{basename}-#{Time.now.getutc.to_i}.html" 64 | options[:to_file] = outfile 65 | 66 | Asciidoctor.convert_file f, options 67 | 68 | end 69 | 70 | if Asciibuild::Extensions.failed 71 | exit 1 72 | end 73 | -------------------------------------------------------------------------------- /doc/DOCKER.adoc: -------------------------------------------------------------------------------- 1 | == Creating and Building Docker containers 2 | 3 | `asciibuild` has out-of-the-box support for creating, manipulating, and executing code inside of Docker containers. 4 | 5 | `asciibuild` can build and run a Docker container if you add the style `[asciibuild,Dockerfile,image={tag}]` to a listing block. Only the named attribute `image` is required. It must contain a valid Docker image name that will be used as the `-t` parameter to the `docker build` command. To create a Docker image, place either the full content of a `Dockerfile` into the listing block, or include partial content using http://asciidoctor.org/docs/user-manual/#include-directive[Asciidoctor include]. Examples can be found in the link:../test/test-block-processor.adoc#alpine[test .adoc file]. 6 | 7 | .Optional Named Attributes 8 | * `build_opts=` - _(default: '')_ - Additional options to pass to the `docker build` command. Could be used to pass `--build-arg` or other flags to influence the build. 9 | * `run=[true|false|command]` - _(default: '')_ - If set to anything other than '' or `false`, run this image after building it. If `run=true`, do not pass a command but let the default built-in command take effect. If `run=somecmd.sh`, pass `somecmd.sh` as the command to the container. 10 | * `run_opts=` - _(default: '')_ - Additional options to pass to the `docker run` command if `run != false`. 11 | * `file=[Dockerfile]` - _(default: 'Dockerfile')_ - Name of the file written to disk and passed to `docker build`. A file is written rather than piping content to `STDIN` because it provides the docker daemon with a context from which files can be `COPY`, `ADD`, etc... 12 | * `overwrite=[true]` - _(default: true)_ - Whether or not to overwrite the file named in the `file` attribute. Defaults to `true` so that `asciibuild` can be run repeatedly on a file and the contents of e.g. `Dockerfile` replaced on each run. If `overwrite=false`, however, `asciibuild` will raise an error if the file already exists. In this case it's up to the user to provide for the cleaning of the file using `make` or `rake` or simply `rm -f`. 13 | 14 | NOTE: `asciibuild` processes documents in `SERVER` mode so that includes will work. 15 | 16 | == Referencing Docker images 17 | 18 | While it is possible to run Docker commands in a `bash` block, using the built-in Docker support has the advantage of baking `docker exec` functionality into each listing block. If a named attribute exists like `container="Title of Container Block"` then `asciibuild` will wrap the call to the interpreter of your specified language in a `docker exec`. The value of the `container` must be the title of the block in which the `Dockerfile` instructions exist. Add `run=true` to that listing block to get a container running in the background (be sure the `CMD` or `run_opts` contain a command that will block indefinitely and hold the container open e.g. `/bin/cat`). 19 | 20 | [listing] 21 | .... 22 | [[alpine]] 23 | .Alpine Base 24 | [source,Dockerfile] 25 | [asciibuild,Dockerfile,image=base:alpine,run=true] 26 | ---- 27 | FROM alpine 28 | RUN apk add --no-cache bash 29 | CMD /bin/cat 30 | ---- 31 | 32 | .Run BASH script 33 | [source,bash] 34 | [asciibuild,bash,container="Alpine Base"] 35 | ---- 36 | echo 'Hello World' 37 | ---- 38 | .... 39 | 40 | In this example, because the `container` attribute is set to the title of the `Dockerfile` block and because `run=true`, `asciibuild` will wrap the call to `bash` for the "Run BASH script" block with a `docker exec` to the container that was started in the background. 41 | 42 | NOTE: In order to clean up backgrounded containers, `asciibuild` adds a label to anything it starts. Filter the containers with `label=asciibuild.name="$doctitle"`, where `$doctitle` is set to the title of the AsciiDoc document you're processing. An example of this cleanup procedure can be found in the link:../test/test-block-processor.adoc#cleanup[test document]. 43 | -------------------------------------------------------------------------------- /doc/BUILD.adoc: -------------------------------------------------------------------------------- 1 | == Installing the gem 2 | 3 | `asciibuild` is available on Ruby Gems by just installing from the internet: 4 | 5 | .Install with gem 6 | [source,bash] 7 | ---- 8 | gem install asciibuild 9 | ---- 10 | 11 | [[gem]] 12 | == Building with gem 13 | 14 | `asciibuild` is packaged as a gem. Build and install it from source using `gem build` and `gem install`. For convenience, there is a `make` target that will perform both steps. 15 | 16 | .Build and Install with make 17 | [source,bash] 18 | ---- 19 | git clone git@github.com:jbrisbin/asciibuild.git 20 | cd asciibuild 21 | make gem 22 | ---- 23 | 24 | Or you can perform the steps separately. 25 | 26 | .Build the gem 27 | [source,bash] 28 | ---- 29 | gem build asciibuild.gemspec 30 | gem install asciibuild-*.gem 31 | ---- 32 | 33 | [[bundler]] 34 | == Building with Bundler 35 | 36 | Building `asciibuild` can be done with bundler. The included link:../Gemfile[Gemfile] contains the necessary configuration to build and install `asciibuild` using a simple `bundle install`. 37 | 38 | .Build asciibuild itself 39 | ---- 40 | > make install 41 | rm -Rf *.gem vendor *.log metastore_db Dockerfile Gemfile.lock 42 | gem uninstall -x asciibuild 43 | bundle install 44 | Fetching gem metadata from https://rubygems.org/......... 45 | Fetching version metadata from https://rubygems.org/. 46 | Resolving dependencies... 47 | Using asciidoctor 1.5.4 48 | Using mustache 1.0.3 49 | Using posix-spawn 0.3.11 50 | Using yajl-ruby 1.2.1 51 | Using bundler 1.13.1 52 | Using pygments.rb 0.6.3 53 | Using asciibuild 0.1.0 from source at `.` 54 | Bundle complete! 4 Gemfile dependencies, 7 gems now installed. 55 | Use `bundle show [gemname]` to see where a bundled gem is installed. 56 | ---- 57 | 58 | This installs the necessary dependencies, as well as the `asciibuild` gem with bundler. In order to execute `asciibuild` installed this way, you must invoke it with `bundle exec asciibuild`. An example invocation can be found in the link:../Makefile[Makefile]. See the link:USAGE.adoc[USAGE] document for more on running `asciibuild`. 59 | 60 | === Building with Docker 61 | 62 | If you're using `rbenv` footnote:[https://github.com/rbenv/rbenv] or `rvm` footnote:[https://rvm.io/] to manage your Ruby environments, then it may not matter to you to have `asciibuild` installed globally. As an alternative to installing `asciibuild` globally, you can use a Docker image to process documents (assuming the image contains anything you're likely to need to run from any of your listing blocks like `bash`, `python`, or what have you). 63 | 64 | NOTE: This is an `asciibuild`-enabled file. You can change the variables defined here by passing `-a` flags when running `asciibuild` on this file. 65 | 66 | :workdir: /tmp/asciibuild 67 | 68 | .Variables 69 | * workdir = {workdir} 70 | 71 | .Alpine-based Docker container 72 | [source,Dockerfile] 73 | [asciibuild,Dockerfile,image=asciibuild,overwrite=true] 74 | ---- 75 | FROM alpine 76 | RUN apk add --no-cache bash make build-base ruby ruby-rdoc ruby-irb ruby-bundler ruby-dev py-pip docker 77 | RUN pip install pygments 78 | 79 | RUN mkdir -p {{workdir}} 80 | COPY . {{workdir}}/ 81 | WORKDIR {{workdir}} 82 | RUN bundle install 83 | RUN gem build asciibuild.gemspec 84 | RUN gem install ./asciibuild-*.gem -l 85 | RUN rm -Rf {{workdir}} 86 | RUN apk del build-base make ruby-dev 87 | 88 | VOLUME /usr/src 89 | WORKDIR /usr/src 90 | 91 | ENTRYPOINT ["asciibuild"] 92 | ---- 93 | 94 | Build the Docker image that can run `asciibuild` by using `docker build`: 95 | 96 | .Docker build 97 | [source,bash] 98 | ---- 99 | docker build -t asciibuild . 100 | ---- 101 | 102 | If you've bootstrapped `asciibuild` by running one of <> or <> to install it, you can later run the build with `asciibuild` on this file. 103 | 104 | .Docker build using asciibuild installed via gem 105 | [source,bash] 106 | ---- 107 | asciibuild doc/BUILD.adoc 108 | ---- 109 | 110 | .Docker build using asciibuild installed via bundler 111 | [source,bash] 112 | ---- 113 | bundle exec asciibuild doc/BUILD.adoc 114 | ---- 115 | 116 | For documentation on how to run `asciibuild` after it's installed, see the link:USAGE.adoc[USAGE] document. 117 | -------------------------------------------------------------------------------- /test/test-block-processor.adoc: -------------------------------------------------------------------------------- 1 | :version: 1.6.0 2 | :image: test-asciibuild:{version} 3 | :run: true 4 | 5 | = Test Block Processor 6 | Jon Brisbin 7 | 8 | == Environment 9 | 10 | .Variables 11 | * version = {version} 12 | * image = {image} 13 | * run = {run} 14 | 15 | == Before All 16 | 17 | This defines the environment this build will run in. This always gets run. 18 | 19 | .Alpine Build 20 | [[alpine]] 21 | [source,Dockerfile] 22 | [asciibuild,Dockerfile,image={image}-alpine,build_opts="",run={run},overwrite=true] 23 | ---- 24 | FROM alpine 25 | RUN apk add --no-cache bash 26 | CMD /bin/cat 27 | ---- 28 | 29 | .Ubuntu Build 30 | [[ubuntu]] 31 | [source,Dockerfile] 32 | [asciibuild,Dockerfile,image={image}-ubuntu,build_opts="",run={run},overwrite=true] 33 | ---- 34 | FROM ubuntu 35 | RUN apt-get update && apt-get install -y python # <1> 36 | CMD /bin/cat 37 | ---- 38 | <1> Install needed utilities 39 | 40 | == Build 41 | 42 | This is the build section, which runs in container `{image}`. 43 | 44 | === Test Bash 45 | 46 | This section tests running `bash` in an Alpine container. 47 | 48 | .Test bash 49 | [source,bash] 50 | [asciibuild,bash,container="Alpine Build"] 51 | ---- 52 | echo OS: `uname -s` 53 | ---- 54 | 55 | === Test Python 56 | 57 | This section tests running `python` in a Ubuntu container. 58 | 59 | .Test python 60 | [source,python] 61 | [asciibuild,python,container="Ubuntu Build"] 62 | ---- 63 | import subprocess 64 | print "OS: " 65 | subprocess.call(["uname", "-s"]) 66 | ---- 67 | 68 | === Test Pyspark 69 | 70 | This section tests running `pyspark` outside of a container. Requires `pyspark` to be found in the `PATH`. 71 | 72 | .Test pyspark 73 | [source,python] 74 | [asciibuild,pyspark] 75 | ---- 76 | from pyspark import SparkContext 77 | 78 | logFile = "Makefile" 79 | sc = SparkContext("local", "Simple App") 80 | logData = sc.textFile(logFile).cache() 81 | 82 | numAs = logData.filter(lambda s: 'a' in s).count() 83 | numBs = logData.filter(lambda s: 'b' in s).count() 84 | 85 | print("Lines with a: %i, lines with b: %i" % (numAs, numBs)) 86 | ---- 87 | 88 | === Test Spark Shell 89 | 90 | This section tests running `spark-shell` outside of a container. Requires `spark-shell` to be found in the `PATH`. 91 | 92 | .Test spark-shell 93 | [source,scala] 94 | [asciibuild,spark-shell,spark_opts="--packages com.basho.riak:spark-riak-connector_2.10:1.6.0 --conf spark.riak.connection.host=127.0.0.1:8087"] 95 | ---- 96 | import org.apache.spark.SparkContext 97 | import org.apache.spark.SparkContext._ 98 | import org.apache.spark.SparkConf 99 | 100 | object SimpleApp { 101 | def main(args: Array[String]) { 102 | val logFile = "README.adoc" 103 | val conf = new SparkConf().setAppName("Simple App") 104 | val sc = new SparkContext(conf) 105 | val logData = sc.textFile(logFile, 2).cache() 106 | val numAs = logData.filter(line => line.contains("a")).count() 107 | val numBs = logData.filter(line => line.contains("b")).count() 108 | println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) 109 | } 110 | } 111 | ---- 112 | 113 | === Test Erlang 114 | 115 | This section tests running Erlang code via `escript`. Requires `escript` to be found in the `PATH`. 116 | 117 | .Test Erlang 118 | [source,erlang] 119 | [asciibuild,erlang,overwrite=true] 120 | ---- 121 | %% First line must be empty 122 | main(_) -> 123 | Greeting = [ 124 | {hello, <<"World!">>} 125 | ], 126 | io:format("greeting: ~p", [Greeting]). 127 | ---- 128 | 129 | === Test Concat 130 | 131 | This tests whether `asciibuild` can build up a single file from multiple sections. 132 | 133 | .First Section 134 | [source,Dockerfile] 135 | [concat,Dockerfile,file=Dockerfile] 136 | ---- 137 | FROM alpine 138 | ---- 139 | 140 | ifdef::greeting[] 141 | This is another section. 142 | 143 | .Second Section 144 | [source,Dockerfile] 145 | [concat,Dockerfile,file=Dockerfile] 146 | ---- 147 | RUN echo "Hello World" >/greeting.txt 148 | ---- 149 | endif::[] 150 | 151 | This is the third section. 152 | 153 | .Third Section 154 | [source,Dockerfile] 155 | [concat,Dockerfile,file=Dockerfile] 156 | ---- 157 | CMD cat /greeting.txt 158 | ---- 159 | 160 | Now we should be able to build and run it. 161 | 162 | .Build and Run 163 | [source,bash] 164 | [asciibuild,bash] 165 | ---- 166 | docker build -t asciibuild-concat . 167 | [ "Hello World" == "$(docker run asciibuild-concat)" ] 168 | ---- 169 | 170 | === Test Enable Disable 171 | 172 | This block should fail if asciibuild is run and `enabled` isn't `false`. 173 | 174 | .Disabled Block doesn't run 175 | [source,bash] 176 | [asciibuild,bash,enabled=false] 177 | ---- 178 | [ "true" == "false" ] 179 | ---- 180 | 181 | === Test Dockerfile include 182 | 183 | .Include Alpine Content 184 | [asciibuild,Dockerfile,image=build-essential-test:alpine,run=false] 185 | ---- 186 | FROM alpine 187 | include::build-essential.Dockerfile[tags=alpine;common] 188 | CMD /bin/sh 189 | ---- 190 | 191 | == After All 192 | 193 | This defines what happens after the build. This always gets run. 194 | 195 | [[cleanup]] 196 | .Cleanup 197 | [source,bash] 198 | [asciibuild,bash] 199 | ---- 200 | docker rm -f $(docker ps -a -q -f label=asciibuild.name="Test Block Processor") 201 | ---- 202 | 203 | .Normal Block 204 | ==== 205 | [source,bash] 206 | ---- 207 | echo 'Normal listing block' 208 | ---- 209 | ==== 210 | -------------------------------------------------------------------------------- /doc/USAGE.adoc: -------------------------------------------------------------------------------- 1 | == Running asciibuild 2 | 3 | If you've already link:BUILD.adoc[installed the gem as described in the BUILD document], read on. 4 | 5 | To use `asciibuild` on your Asciidoctor files, make sure you add the require flag to your invocation of `asciidoctor` or just use the `asciibuild` executable that was installed with the gem. 6 | 7 | In a stock Asciidoctor file, this won't do anything other than process the `.adoc` into a file in the `abuild/` directory using your preferred backend (`html` by default). If you want `asciibuild` to EVAL your listing blocks, just add a style to them that conforms to the pattern `[asciibuild,{lang}]`, where `lang` is either one of the built-in supported languages, or an executable that accepts input on `STDIN`. `asciibuild` will create a process based on the name of the interpreter in use (e.g. `python`) and pipe the content of the listing block into the process via `STDIN`. Any output (STD or ERR) is captured and written to the result document in the `abuild/` directory. 8 | 9 | [source,bash] 10 | ---- 11 | asciibuild build.adoc 12 | 13 | ... output ... 14 | 15 | open abuild/ 16 | ---- 17 | 18 | Currently, the built-in supported languages are described in the following list. Required settings are listed with `{attribute}` where the value must go and optional attributes are listed with their default settings. 19 | 20 | .Supported languages 21 | * Any interpreter that accepts `` as input. Examples: `bash`, `python`, or `ruby`. 22 | - `[asciibuild, bash]` 23 | - `[asciibuild, python]` 24 | - `[asciibuild, ruby]` 25 | * Docker 26 | - `[asciibuild, Dockerfile, image={name}, file="Dockerfile", overwrite=true, run=false, build_opts="", run_opts=""]` _For more on using the Docker support, visit the link:DOCKER.adoc[DOCKER] document_ 27 | * docker-compose 28 | - `[asciibuild, docker-compose, command=build, compose_opts="", file="docker-compose.yml"]` 29 | * Erlang (via `escript`) 30 | - `[asciibuild, erlang, escript_opts="", file="escript.erl"]` 31 | * Makefile 32 | - `[ascibuild, Makefile, target="", make_opts="", file="Makefile"]` 33 | * Spark 34 | - Scala: `[asciibuild, spark-shell, spark_opts=""]` 35 | - Python: `[asciibuild, pyspark, spark_opts=""]` 36 | 37 | == Using Shell 38 | 39 | To use a `bash` or `sh` shell, add the `[asciibuild,bash]` or `[asciibuild,sh]` style to any listing block. 40 | 41 | [listing] 42 | [source,asciidoc] 43 | .... 44 | .Execute BASH in asciibuild 45 | [source,bash] 46 | [asciibuild,bash] 47 | ---- 48 | echo Hello `uname -s` 49 | ---- 50 | .... 51 | 52 | NOTE: Default options when using bash are `-exs`. If you want to add https://www.gnu.org/software/bash/manual/html_node/Invoking-Bash.html[additional options] add an attribute of `bash_opts=""` to the `[asciibuild]` style. 53 | 54 | == Using Spark 55 | 56 | `asciibuild` supports http://spark.apache.org/[Apache Spark] out-of-the-box. It supports both http://spark.apache.org/docs/latest/programming-guide.html#tab_python_0[pyspark] and http://spark.apache.org/docs/latest/programming-guide.html#tab_scala_0[spark-shell] (Python and Scala, respectively). To use the Spark support in `asciibuild`, add a style of `[asciibuild,pyspark]` for PySpark or `[asciibuild,spark-shell]` for Scala. 57 | 58 | This example is taken from the Spark documentation on using Python with Spark: 59 | 60 | [listing] 61 | [source,asciidoc] 62 | .... 63 | .Execute PySpark in asciibuild 64 | [source,python] 65 | [asciibuild,pyspark] 66 | ---- 67 | from pyspark import SparkContext 68 | 69 | logFile = "README.adoc" 70 | sc = SparkContext("local", "Simple App") 71 | logData = sc.textFile(logFile).cache() 72 | 73 | numAs = logData.filter(lambda s: 'a' in s).count() 74 | numBs = logData.filter(lambda s: 'b' in s).count() 75 | 76 | print("Lines with a: %i, lines with b: %i" % (numAs, numBs)) 77 | ---- 78 | .... 79 | 80 | == Using other Languages 81 | 82 | `asciibuild` will support any language who's executable accepts `` as input. If you can pipe content into it, you can use it in `asciibuild`. Here's an example using Python: 83 | 84 | [listing] 85 | [source,asciidoc] 86 | .... 87 | .Execute Python in asciibuild 88 | [source,python] 89 | [asciibuild,python] 90 | ---- 91 | import subprocess 92 | print "OS:" 93 | subprocess.call(["uname", "-s"]) 94 | ---- 95 | .... 96 | 97 | NOTE: The styles `[source,bash]` and `[source,python]` are for the benefit of editors that recognize Asciidoc and will show source code formatting in a preview. `asciibuild` will add its own styles to the resulting blocks, regardless of what is set in the source document, so the generated document will be formatted correctly. 98 | 99 | == Handling Output 100 | 101 | Output of commands described in `asciibuild`-enabled listing blocks is inserted directly into the rendered document, immediately following the block definition. If there is any output on `` it will also be rendered into the document. If the return code of the command is anything other than `0`, the step will be marked as "in error" and subsequent steps will be skipped. A red warning icon will appear next to the step title to indicate the error. The following screenshot shows STDOUT and STDERR when an error occurs. 102 | 103 | image:asciibuild_error.jpg[Error in Asciibuild] 104 | 105 | == Advanced Usage 106 | 107 | It's possible to execute only a given set of blocks in an `asciibuild` document by setting the document attribute `sections` to a comma-separated list of regexes that will match section titles that should be executed. If a section title does not match one of these regexes, it will be marked in the resulting document as "skipped" with a yellow pause icon, as in the following example and screenshot. 108 | 109 | Any section that starts with the name "Before All" or "After All" will *always* be run, regardless of the setting of `sections`. This is to provide setup and cleanup functionality. To get before and after functionality for a specific section, use a title like "Before My Section" and "After My Section". If you tell asciibuild to only execute "My Section", then it will *also* execute the "Before" and "After" sections as well. 110 | 111 | NOTE: The fact that they are named "Before" and "After" is a semantic convenience only. Sections are executed in the order in which they appear in the document. 112 | 113 | .Execute only One Section 114 | [source,bash] 115 | ---- 116 | asciibuild -a sections="Test Bash" test/test-block-processor.adoc 117 | ---- 118 | 119 | image:asciibuild_skipped.jpg[Section Skipped] 120 | 121 | === Skipping Mustache Processing 122 | 123 | If you want to entirely skip the processing of listing block text through the https://mustache.github.io/[Mustache template library], add an attribute to the listing block of `template=false`. This is helpful if you want to use things like Go templates, which use the same delimiters as Mustache templates. 124 | 125 | [listing] 126 | [source,asciidoc] 127 | .... 128 | .Execute Docker in asciibuild 129 | [source,bash] 130 | [asciibuild,bash,template=false] 131 | ---- 132 | docker inspect -q -f '{{.NetworkSettings.IPAddress}}' my-container 133 | ---- 134 | .... 135 | 136 | If you want to use Go and Mustache templates in the same listing block, you can. You just have to set the Mustache delimiter to something other than `{{ }}`. 137 | 138 | [listing] 139 | [source,asciidoc] 140 | .... 141 | :my_container: my-container 142 | 143 | .Execute Docker in asciibuild 144 | [source,bash] 145 | [asciibuild,bash,template=false] 146 | ---- 147 | # Reset Mustache tags since they conflict with Go templates 148 | # {{=<% %>=}} 149 | docker inspect -q -f '{{.NetworkSettings.IPAddress}}' <% my_container %> 150 | ---- 151 | .... 152 | -------------------------------------------------------------------------------- /lib/asciibuild/extensions.rb: -------------------------------------------------------------------------------- 1 | require 'asciidoctor' 2 | require 'asciidoctor/extensions' 3 | require 'open3' 4 | require 'mustache' 5 | 6 | def include_section? parent, attrs 7 | if parent.document.attributes["error"] 8 | return false 9 | elsif parent.title == "Before All" or parent.title == "After All" 10 | return true 11 | end 12 | 13 | sections = if parent.document.attributes["sections"] 14 | parent.document.attributes["sections"].split(/,[ ]*/) 15 | else 16 | [] 17 | end 18 | 19 | deps = [] 20 | 21 | incl_sect = sections.empty? 22 | sections.each do |s| 23 | if not incl_sect 24 | if Regexp.new(s) =~ parent.title 25 | incl_sect = true 26 | deps << "Before " + parent.title << "After " + parent.title 27 | end 28 | end 29 | end 30 | 31 | incl_sect or deps.include?(parent.title) 32 | end 33 | 34 | def get_lang lang 35 | case lang 36 | when 'pyspark' 37 | 'python' 38 | when 'spark-shell' 39 | 'scala' 40 | when 'docker-compose' 41 | 'yaml' 42 | else 43 | lang 44 | end 45 | end 46 | 47 | def write_file attrs, default_name, body 48 | name = attrs['file'] ||= default_name 49 | mode = if attrs['overwrite'] == 'false' then File::WRONLY|File::CREAT|File::EXCL else 'w' end 50 | open(name, mode) do |f| 51 | f.write(body + "\n") 52 | end 53 | name 54 | end 55 | 56 | def normalize parent, attrs, lines 57 | redact = parent.document.attributes['redact'] 58 | patts = if redact 59 | if redact.class == Array 60 | redact 61 | else 62 | [redact] 63 | end 64 | else 65 | [] 66 | end 67 | 68 | new_lines = [] 69 | lines.each do |l| 70 | patts.each do |p| 71 | l = l.gsub(Regexp.new(p), "[****]") 72 | end 73 | new_lines << l.gsub(/\e\[([;\d]+)?m/, '') # Sneak in ANSI color stripping here as well 74 | end 75 | new_lines 76 | end 77 | 78 | def wait_for_container cid 79 | cmd = "docker inspect -f {{.State.Running}} %s" % cid 80 | cout, cerr, cstatus = Open3.capture3(cmd) 81 | until cstatus != 0 or cout.chomp == "true" do 82 | sleep 0.1 83 | cout, cerr, cstatus = Open3.capture3(cmd) 84 | end 85 | end 86 | 87 | module Asciibuild 88 | module Extensions 89 | @failed = false 90 | 91 | def self.failed 92 | @failed 93 | end 94 | 95 | def self.failed=(f) 96 | @failed = f 97 | end 98 | 99 | class ConcatBlock < Asciidoctor::Extensions::BlockProcessor 100 | # BlockProcessor to concatenate content into a single file. 101 | # It allows you to break up sections of a file into separate listing blocks and aggregate them together 102 | # into a single file you can reference later in the process. 103 | # 104 | # .Add function to file 105 | # [concat,bash,file=utility.sh] 106 | # ---- 107 | # #!/bin/bash 108 | # 109 | # fun greet() { 110 | # echo 'Hello World' 111 | # } 112 | # ---- 113 | # 114 | # .Add call to file 115 | # [concat,bash,file=utility.sh] 116 | # ---- 117 | # echo 'Hello World' 118 | # ---- 119 | # 120 | # After the document is processed, a file in the working directory will exist named "utility.sh" which 121 | # will consist of the content of all the listing blocks in that section that use the same file name. 122 | 123 | use_dsl 124 | named :concat 125 | on_context :listing 126 | 127 | def process parent, reader, attrs 128 | doctitle = parent.document.attributes["doctitle"] 129 | body = reader.read 130 | 131 | puts "" 132 | puts "#{doctitle} > #{parent.title} > #{attrs['title']}" 133 | puts (">" * 80) 134 | 135 | fname = if not include_section?(parent, attrs) 136 | if parent.document.attributes["error"] 137 | puts "Section \"#{parent.title}\" skipped due to previous error." 138 | attrs['title'] = 'icon:pause-circle[role=red] ' + attrs['title'] + " (previous error)" 139 | else 140 | sections = parent.document.attributes["sections"].split(/,[ ]*/) 141 | puts "Section \"#{parent.title}\" skipped. Does not match #{sections}." 142 | attrs['title'] = 'icon:pause-circle[role=yellow] ' + attrs['title'] 143 | end 144 | false 145 | else 146 | attrs["file"] 147 | end 148 | 149 | if fname 150 | if not parent.document.attributes["#{parent.title} #{fname}"] 151 | open(fname, 'w') do |f| 152 | f.write("") 153 | end 154 | parent.document.attributes["#{parent.title} #{fname}"] = true 155 | end 156 | 157 | open(fname, 'a') do |f| 158 | f.write(body + "\n") 159 | end 160 | puts body 161 | end 162 | 163 | puts ("<" * 80) 164 | 165 | create_open_block parent, ["----", body, "----"], attrs 166 | end 167 | 168 | end 169 | 170 | class EvalBlock < Asciidoctor::Extensions::BlockProcessor 171 | # BlockProcessor to make the content of listing blocks executable. Has built-in support for: 172 | # 173 | # * `Dockerfile` 174 | # * `spark-shell` (Scala) 175 | # * `pyspark` (Python) 176 | # * `erlang` 177 | # * Any interpreted language that accepts `STDIN` 178 | # 179 | # To use, add the `[asciibuild,Language]` style to a listing block. 180 | # 181 | # .Run a bash script 182 | # [asciibuild,bash] 183 | # ---- 184 | # echo 'Hello World' 185 | # ---- 186 | # 187 | # If using a language like BASH or Python, the language's interpreter should accept `STDIN` as 188 | # input and be found in the `PATH`. 189 | 190 | use_dsl 191 | named :asciibuild 192 | on_context :listing 193 | 194 | def before_start(cmd, parent, attrs, lines, stderr_lines) 195 | end 196 | 197 | def after_end(cmd, parent, lines, attrs) 198 | if attrs[2] == 'Dockerfile' and attrs['run'] and not attrs['run'] == 'false' 199 | doctitle = parent.document.attributes['doctitle'] 200 | cmd = if attrs['run'] == 'true' then '' else attrs['run'] end 201 | name = if attrs['original_title'] then attrs['original_title'] else doctitle end 202 | docker_run = "docker run -d -i --label asciibuild.name=\"#{doctitle}\" #{attrs['run_opts']} #{attrs['image']} #{cmd}" 203 | 204 | puts docker_run 205 | 206 | rout, rerr, status = Open3.capture3(docker_run) 207 | puts rout, rerr 208 | if status == 0 209 | cid = rout.chomp 210 | wait_for_container cid 211 | parent.document.attributes["#{name} container"] = cid 212 | else 213 | Asciibuild::Extensions.failed = true 214 | end 215 | lines << "----" << "> #{docker_run}" << rout << rerr << "----" 216 | end 217 | create_open_block parent, lines, attrs 218 | end 219 | 220 | def process parent, reader, attrs 221 | lang = get_lang attrs[2] 222 | doctitle = parent.document.attributes['doctitle'] 223 | if not attrs['title'] 224 | attrs['title'] = lang 225 | end 226 | attrs['original_title'] = attrs['title'] 227 | 228 | if not include_section?(parent, attrs) or parent.document.attributes["enabled"] == "false" or attrs["enabled"] == "false" 229 | if parent.document.attributes["error"] 230 | puts "Section \"#{parent.title}\" skipped due to previous error." 231 | attrs['title'] = 'icon:pause-circle[role=red] ' + attrs['title'] + " (previous error)" 232 | elsif parent.document.attributes["enabled"] == "false" or attrs["enabled"] == "false" 233 | puts "Section \"#{parent.title}\" not enabled." 234 | else 235 | sections = parent.document.attributes["sections"].split(/,[ ]*/) 236 | puts "Section \"#{parent.title}\" skipped. Does not match #{sections}." 237 | attrs['title'] = 'icon:pause-circle[role=yellow] ' + attrs['title'] 238 | end 239 | lang = get_lang attrs[2] 240 | return create_open_block parent, ["[source,#{lang}]", "----"] + reader.lines + ["----"], attrs 241 | end 242 | 243 | body = if not attrs['template'] == 'false' 244 | Mustache.render(reader.read, parent.document.attributes) 245 | else 246 | reader.read 247 | end 248 | 249 | lines = [] 250 | stderr_lines = [] 251 | 252 | cmd = case attrs[2] 253 | when 'bash' 254 | "bash -exs #{attrs['bash_opts']}" 255 | when 'Dockerfile' 256 | if not attrs['image'] 257 | raise 'Missing image name. Add attribute of image={name} to the [asciibuild,Dockerfile] style.' 258 | end 259 | fname = write_file attrs, 'Dockerfile', body 260 | "docker build -t #{attrs['image']} #{attrs['build_opts']} -f #{fname} ." 261 | when 'docker-compose' 262 | dc_cmd = attrs['command'] ||= 'build' 263 | fname = write_file attrs, 'docker-compose.yml', body 264 | "docker-compose -f #{fname} #{attrs['compose_opts']} #{dc_cmd}" 265 | when 'erlang' 266 | fname = write_file attrs, 'escript.erl', body 267 | "escript #{fname} #{attrs['escript_opts']}" 268 | when 'elixir' 269 | fname = write_file attrs, 'elixir.exs', body 270 | "elixir -r Logger -pa ebin -pa 'deps/*/ebin' #{attrs['elixir_opts']} #{fname}" 271 | when 'Makefile' 272 | "make -f - #{attrs['make_opts']} #{attrs['target']}" 273 | when 'pyspark' 274 | "pyspark #{attrs['spark_opts']}" 275 | when 'spark-shell' 276 | "spark-shell #{attrs['spark_opts']}" 277 | else 278 | opts = attrs["#{attrs[2]}_opts"] 279 | "#{attrs[2]} #{opts}" 280 | end 281 | # Check to see if we run inside a container 282 | if attrs['container'] 283 | name = if attrs['container'] == 'true' then doctitle else attrs['container'] end 284 | container_id = parent.document.attributes["#{name} container"] 285 | cmd = "docker exec -i #{container_id} #{attrs['exec_opts']} #{cmd}" 286 | end 287 | 288 | lines = ["[source,#{lang}]", "----", body, "", "----"] 289 | 290 | puts "" 291 | puts "#{doctitle} > #{parent.title} > #{attrs['title']}" 292 | puts (">" * 80) 293 | 294 | before_start cmd, parent, attrs, lines, stderr_lines 295 | 296 | lines << ".#{cmd}" << "----" 297 | 298 | puts body 299 | puts "> #{cmd}" 300 | puts "" 301 | 302 | status = 0 303 | Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr| 304 | stdin << body << "\n" 305 | stdin.close 306 | 307 | while line=stdout.gets do 308 | puts line 309 | lines << line.chomp 310 | end 311 | while line=stderr.gets do 312 | STDERR.puts line 313 | stderr_lines << line.chomp 314 | end 315 | 316 | status = wait_thr.value 317 | end 318 | lines << "----" 319 | puts ("<" * 80) 320 | 321 | if not stderr_lines.size == 0 322 | lines << ".STDERR" << "----" 323 | stderr_lines.each do |l| lines << l end 324 | lines << "----" 325 | end 326 | 327 | if status != 0 328 | lines << "IMPORTANT: #{cmd} failed with #{status}" 329 | Asciibuild::Extensions.failed = true 330 | attrs['title'] = 'icon:exclamation-circle[role=red] ' + attrs['title'] 331 | else 332 | attrs['title'] = 'icon:check-circle[role=green] ' + attrs['title'] 333 | end 334 | 335 | after_end cmd, parent, normalize(parent, attrs, lines), attrs 336 | end 337 | end 338 | 339 | Asciidoctor::Extensions.register do 340 | block EvalBlock 341 | block ConcatBlock 342 | end 343 | end 344 | end 345 | -------------------------------------------------------------------------------- /stylesheets/foundation.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ 2 | /* ========================================================================== HTML5 display definitions ========================================================================== */ 3 | /** Correct `block` display not defined in IE 8/9. */ 4 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } 5 | 6 | /** Correct `inline-block` display not defined in IE 8/9. */ 7 | audio, canvas, video { display: inline-block; } 8 | 9 | /** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ 10 | audio:not([controls]) { display: none; height: 0; } 11 | 12 | /** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ 13 | [hidden], template { display: none; } 14 | 15 | script { display: none !important; } 16 | 17 | /* ========================================================================== Base ========================================================================== */ 18 | /** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ 19 | html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } 20 | 21 | /** Remove default margin. */ 22 | body { margin: 0; } 23 | 24 | /* ========================================================================== Links ========================================================================== */ 25 | /** Remove the gray background color from active links in IE 10. */ 26 | a { background: transparent; } 27 | 28 | /** Address `outline` inconsistency between Chrome and other browsers. */ 29 | a:focus { outline: thin dotted; } 30 | 31 | /** Improve readability when focused and also mouse hovered in all browsers. */ 32 | a:active, a:hover { outline: 0; } 33 | 34 | /* ========================================================================== Typography ========================================================================== */ 35 | /** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ 36 | h1 { font-size: 2em; margin: 0.67em 0; } 37 | 38 | /** Address styling not present in IE 8/9, Safari 5, and Chrome. */ 39 | abbr[title] { border-bottom: 1px dotted; } 40 | 41 | /** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ 42 | b, strong { font-weight: bold; } 43 | 44 | /** Address styling not present in Safari 5 and Chrome. */ 45 | dfn { font-style: italic; } 46 | 47 | /** Address differences between Firefox and other browsers. */ 48 | hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } 49 | 50 | /** Address styling not present in IE 8/9. */ 51 | mark { background: #ff0; color: #000; } 52 | 53 | /** Correct font family set oddly in Safari 5 and Chrome. */ 54 | code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } 55 | 56 | /** Improve readability of pre-formatted text in all browsers. */ 57 | pre { white-space: pre-wrap; } 58 | 59 | /** Set consistent quote types. */ 60 | q { quotes: "\201C" "\201D" "\2018" "\2019"; } 61 | 62 | /** Address inconsistent and variable font size in all browsers. */ 63 | small { font-size: 80%; } 64 | 65 | /** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ 66 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 67 | 68 | sup { top: -0.5em; } 69 | 70 | sub { bottom: -0.25em; } 71 | 72 | /* ========================================================================== Embedded content ========================================================================== */ 73 | /** Remove border when inside `a` element in IE 8/9. */ 74 | img { border: 0; } 75 | 76 | /** Correct overflow displayed oddly in IE 9. */ 77 | svg:not(:root) { overflow: hidden; } 78 | 79 | /* ========================================================================== Figures ========================================================================== */ 80 | /** Address margin not present in IE 8/9 and Safari 5. */ 81 | figure { margin: 0; } 82 | 83 | /* ========================================================================== Forms ========================================================================== */ 84 | /** Define consistent border, margin, and padding. */ 85 | fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } 86 | 87 | /** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ 88 | legend { border: 0; /* 1 */ padding: 0; /* 2 */ } 89 | 90 | /** 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. */ 91 | button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } 92 | 93 | /** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ 94 | button, input { line-height: normal; } 95 | 96 | /** 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. */ 97 | button, select { text-transform: none; } 98 | 99 | /** 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. */ 100 | button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } 101 | 102 | /** Re-set default cursor for disabled elements. */ 103 | button[disabled], html input[disabled] { cursor: default; } 104 | 105 | /** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ 106 | input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } 107 | 108 | /** 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). */ 109 | input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } 110 | 111 | /** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ 112 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 113 | 114 | /** Remove inner padding and border in Firefox 4+. */ 115 | button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } 116 | 117 | /** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ 118 | textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } 119 | 120 | /* ========================================================================== Tables ========================================================================== */ 121 | /** Remove most spacing between table cells. */ 122 | table { border-collapse: collapse; border-spacing: 0; } 123 | 124 | meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; } 125 | 126 | meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; } 127 | 128 | meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; } 129 | 130 | *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 131 | 132 | html, body { font-size: 100%; } 133 | 134 | body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } 135 | 136 | a:hover { cursor: pointer; } 137 | 138 | img, object, embed { max-width: 100%; height: auto; } 139 | 140 | object, embed { height: 100%; } 141 | 142 | img { -ms-interpolation-mode: bicubic; } 143 | 144 | #map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } 145 | 146 | .left { float: left !important; } 147 | 148 | .right { float: right !important; } 149 | 150 | .text-left { text-align: left !important; } 151 | 152 | .text-right { text-align: right !important; } 153 | 154 | .text-center { text-align: center !important; } 155 | 156 | .text-justify { text-align: justify !important; } 157 | 158 | .hide { display: none; } 159 | 160 | .antialiased, body { -webkit-font-smoothing: antialiased; } 161 | 162 | img { display: inline-block; vertical-align: middle; } 163 | 164 | textarea { height: auto; min-height: 50px; } 165 | 166 | select { width: 100%; } 167 | 168 | object, svg { display: inline-block; vertical-align: middle; } 169 | 170 | .center { margin-left: auto; margin-right: auto; } 171 | 172 | .spread { width: 100%; } 173 | 174 | p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } 175 | 176 | .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.4; color: #6f6f6f; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } 177 | 178 | /* Typography resets */ 179 | 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; direction: ltr; } 180 | 181 | /* Default Link Styles */ 182 | a { color: #2ba6cb; text-decoration: none; line-height: inherit; } 183 | a:hover, a:focus { color: #2795b6; } 184 | a img { border: none; } 185 | 186 | /* Default paragraph styles */ 187 | p { font-family: inherit; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; text-rendering: optimizeLegibility; } 188 | p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } 189 | 190 | /* Default header styles */ 191 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: bold; font-style: normal; color: #222222; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2125em; } 192 | h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #6f6f6f; line-height: 0; } 193 | 194 | h1 { font-size: 2.125em; } 195 | 196 | h2 { font-size: 1.6875em; } 197 | 198 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } 199 | 200 | h4 { font-size: 1.125em; } 201 | 202 | h5 { font-size: 1.125em; } 203 | 204 | h6 { font-size: 1em; } 205 | 206 | hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } 207 | 208 | /* Helpful Typography Defaults */ 209 | em, i { font-style: italic; line-height: inherit; } 210 | 211 | strong, b { font-weight: bold; line-height: inherit; } 212 | 213 | small { font-size: 60%; line-height: inherit; } 214 | 215 | code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: bold; color: #7f0a0c; } 216 | 217 | /* Lists */ 218 | ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; } 219 | 220 | ul, ol { margin-left: 1.5em; } 221 | ul.no-bullet, ol.no-bullet { margin-left: 1.5em; } 222 | 223 | /* Unordered Lists */ 224 | ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } 225 | ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } 226 | ul.square { list-style-type: square; } 227 | ul.circle { list-style-type: circle; } 228 | ul.disc { list-style-type: disc; } 229 | ul.no-bullet { list-style: none; } 230 | 231 | /* Ordered Lists */ 232 | ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } 233 | 234 | /* Definition Lists */ 235 | dl dt { margin-bottom: 0.3125em; font-weight: bold; } 236 | dl dd { margin-bottom: 1.25em; } 237 | 238 | /* Abbreviations */ 239 | abbr, acronym { text-transform: uppercase; font-size: 90%; color: #222222; border-bottom: 1px dotted #dddddd; cursor: help; } 240 | 241 | abbr { text-transform: none; } 242 | 243 | /* Blockquotes */ 244 | blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; } 245 | blockquote cite { display: block; font-size: 0.8125em; color: #555555; } 246 | blockquote cite:before { content: "\2014 \0020"; } 247 | blockquote cite a, blockquote cite a:visited { color: #555555; } 248 | 249 | blockquote, blockquote p { line-height: 1.6; color: #6f6f6f; } 250 | 251 | /* Microformats */ 252 | .vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } 253 | .vcard li { margin: 0; display: block; } 254 | .vcard .fn { font-weight: bold; font-size: 0.9375em; } 255 | 256 | .vevent .summary { font-weight: bold; } 257 | .vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } 258 | 259 | @media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 260 | h1 { font-size: 2.75em; } 261 | h2 { font-size: 2.3125em; } 262 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } 263 | h4 { font-size: 1.4375em; } } 264 | /* Tables */ 265 | table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } 266 | table thead, table tfoot { background: whitesmoke; font-weight: bold; } 267 | 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: #222222; text-align: left; } 268 | table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } 269 | table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; } 270 | table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; } 271 | 272 | body { tab-size: 4; } 273 | 274 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 275 | 276 | .clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } 277 | .clearfix:after, .float-group:after { clear: both; } 278 | 279 | *:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 0; line-height: inherit; } 280 | 281 | pre, pre > code { line-height: 1.4; color: black; font-family: monospace, serif; font-weight: normal; } 282 | 283 | em em { font-style: normal; } 284 | 285 | strong strong { font-weight: normal; } 286 | 287 | .keyseq { color: #555555; } 288 | 289 | kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: #222222; font-size: 0.65em; line-height: 1.45; background-color: #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 white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; } 290 | 291 | .keyseq kbd:first-child { margin-left: 0; } 292 | 293 | .keyseq kbd:last-child { margin-right: 0; } 294 | 295 | .menuseq, .menu { color: #090909; } 296 | 297 | b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; } 298 | 299 | b.button:before { content: "["; padding: 0 3px 0 2px; } 300 | 301 | b.button:after { content: "]"; padding: 0 2px 0 3px; } 302 | 303 | #header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; } 304 | #header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } 305 | #header:after, #content:after, #footnotes:after, #footer:after { clear: both; } 306 | 307 | #content { margin-top: 1.25em; } 308 | 309 | #content:before { content: none; } 310 | 311 | #header > h1:first-child { color: black; margin-top: 2.25rem; margin-bottom: 0; } 312 | #header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #dddddd; } 313 | #header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; } 314 | #header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #555555; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; } 315 | #header .details span:first-child { margin-left: -0.125em; } 316 | #header .details span.email a { color: #6f6f6f; } 317 | #header .details br { display: none; } 318 | #header .details br + span:before { content: "\00a0\2013\00a0"; } 319 | #header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #6f6f6f; } 320 | #header .details br + span#revremark:before { content: "\00a0|\00a0"; } 321 | #header #revnumber { text-transform: capitalize; } 322 | #header #revnumber:after { content: "\00a0"; } 323 | 324 | #content > h1:first-child:not([class]) { color: black; border-bottom: 1px solid #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; } 325 | 326 | #toc { border-bottom: 1px solid #dddddd; padding-bottom: 0.5em; } 327 | #toc > ul { margin-left: 0.125em; } 328 | #toc ul.sectlevel0 > li > a { font-style: italic; } 329 | #toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; } 330 | #toc ul { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; list-style-type: none; } 331 | #toc li { line-height: 1.3334; margin-top: 0.3334em; } 332 | #toc a { text-decoration: none; } 333 | #toc a:active { text-decoration: underline; } 334 | 335 | #toctitle { color: #6f6f6f; font-size: 1.2em; } 336 | 337 | @media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; } 338 | body.toc2 { padding-left: 15em; padding-right: 0; } 339 | #toc.toc2 { margin-top: 0 !important; background-color: #f2f2f2; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; } 340 | #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; } 341 | #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; } 342 | #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; } 343 | #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } 344 | body.toc2.toc-right { padding-left: 0; padding-right: 15em; } 345 | body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } } 346 | @media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; } 347 | #toc.toc2 { width: 20em; } 348 | #toc.toc2 #toctitle { font-size: 1.375em; } 349 | #toc.toc2 > ul { font-size: 0.95em; } 350 | #toc.toc2 ul ul { padding-left: 1.25em; } 351 | body.toc2.toc-right { padding-left: 0; padding-right: 20em; } } 352 | #content #toc { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 353 | #content #toc > :first-child { margin-top: 0; } 354 | #content #toc > :last-child { margin-bottom: 0; } 355 | 356 | #footer { max-width: 100%; background-color: #222222; padding: 1.25em; } 357 | 358 | #footer-text { color: #dddddd; line-height: 1.44; } 359 | 360 | .sect1 { padding-bottom: 0.625em; } 361 | 362 | @media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } } 363 | .sect1 + .sect1 { border-top: 1px solid #dddddd; } 364 | 365 | #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: normal; } 366 | #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; } 367 | #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; } 368 | #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: #222222; text-decoration: none; } 369 | #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: #151515; } 370 | 371 | .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; } 372 | 373 | .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; } 374 | 375 | table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; } 376 | 377 | .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: black; } 378 | 379 | table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } 380 | 381 | .admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; } 382 | .admonitionblock > table td.icon { text-align: center; width: 80px; } 383 | .admonitionblock > table td.icon img { max-width: none; } 384 | .admonitionblock > table td.icon .title { font-weight: bold; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; text-transform: uppercase; } 385 | .admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #555555; } 386 | .admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } 387 | 388 | .exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 389 | .exampleblock > .content > :first-child { margin-top: 0; } 390 | .exampleblock > .content > :last-child { margin-bottom: 0; } 391 | 392 | .sidebarblock { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 393 | .sidebarblock > :first-child { margin-top: 0; } 394 | .sidebarblock > :last-child { margin-bottom: 0; } 395 | .sidebarblock > .content > .title { color: #6f6f6f; margin-top: 0; } 396 | 397 | .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; } 398 | 399 | .literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #eeeeee; } 400 | .sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; } 401 | 402 | .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px solid #cccccc; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 0.8em 0.8em 0.65em 0.8em; font-size: 0.8125em; } 403 | .literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } 404 | @media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } } 405 | @media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } } 406 | 407 | .literalblock.output pre { color: #eeeeee; background-color: black; } 408 | 409 | .listingblock pre.highlightjs { padding: 0; } 410 | .listingblock pre.highlightjs > code { padding: 0.8em 0.8em 0.65em 0.8em; -webkit-border-radius: 0; border-radius: 0; } 411 | 412 | .listingblock > .content { position: relative; } 413 | 414 | .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: #999; } 415 | 416 | .listingblock:hover code[data-lang]:before { display: block; } 417 | 418 | .listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } 419 | 420 | .listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; } 421 | 422 | table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; } 423 | 424 | table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.4; } 425 | 426 | table.pyhltable td.code { padding-left: .75em; padding-right: 0; } 427 | 428 | pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; } 429 | 430 | pre.pygments .lineno { display: inline-block; margin-right: .25em; } 431 | 432 | table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; } 433 | 434 | .quoteblock { margin: 0 1em 1.25em 1.5em; display: table; } 435 | .quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; } 436 | .quoteblock blockquote, .quoteblock blockquote p { color: #6f6f6f; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; } 437 | .quoteblock blockquote { margin: 0; padding: 0; border: 0; } 438 | .quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #6f6f6f; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } 439 | .quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } 440 | .quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; } 441 | .quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #555555; } 442 | .quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; } 443 | .quoteblock .quoteblock blockquote:before { display: none; } 444 | 445 | .verseblock { margin: 0 1em 1.25em 1em; } 446 | .verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #6f6f6f; font-weight: 300; text-rendering: optimizeLegibility; } 447 | .verseblock pre strong { font-weight: 400; } 448 | .verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; } 449 | 450 | .quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; } 451 | .quoteblock .attribution br, .verseblock .attribution br { display: none; } 452 | .quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #555555; } 453 | 454 | .quoteblock.abstract { margin: 0 0 1.25em 0; display: block; } 455 | .quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; } 456 | .quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; } 457 | 458 | table.tableblock { max-width: 100%; border-collapse: separate; } 459 | table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; } 460 | 461 | table.tableblock, th.tableblock, td.tableblock { border: 0 solid #dddddd; } 462 | 463 | table.grid-all th.tableblock, table.grid-all td.tableblock { border-width: 0 1px 1px 0; } 464 | 465 | table.grid-all tfoot > tr > th.tableblock, table.grid-all tfoot > tr > td.tableblock { border-width: 1px 1px 0 0; } 466 | 467 | table.grid-cols th.tableblock, table.grid-cols td.tableblock { border-width: 0 1px 0 0; } 468 | 469 | table.grid-all * > tr > .tableblock:last-child, table.grid-cols * > tr > .tableblock:last-child { border-right-width: 0; } 470 | 471 | table.grid-rows th.tableblock, table.grid-rows td.tableblock { border-width: 0 0 1px 0; } 472 | 473 | table.grid-all tbody > tr:last-child > th.tableblock, table.grid-all tbody > tr:last-child > td.tableblock, table.grid-all thead:last-child > tr > th.tableblock, table.grid-rows tbody > tr:last-child > th.tableblock, table.grid-rows tbody > tr:last-child > td.tableblock, table.grid-rows thead:last-child > tr > th.tableblock { border-bottom-width: 0; } 474 | 475 | table.grid-rows tfoot > tr > th.tableblock, table.grid-rows tfoot > tr > td.tableblock { border-width: 1px 0 0 0; } 476 | 477 | table.frame-all { border-width: 1px; } 478 | 479 | table.frame-sides { border-width: 0 1px; } 480 | 481 | table.frame-topbot { border-width: 1px 0; } 482 | 483 | th.halign-left, td.halign-left { text-align: left; } 484 | 485 | th.halign-right, td.halign-right { text-align: right; } 486 | 487 | th.halign-center, td.halign-center { text-align: center; } 488 | 489 | th.valign-top, td.valign-top { vertical-align: top; } 490 | 491 | th.valign-bottom, td.valign-bottom { vertical-align: bottom; } 492 | 493 | th.valign-middle, td.valign-middle { vertical-align: middle; } 494 | 495 | table thead th, table tfoot th { font-weight: bold; } 496 | 497 | tbody tr th { display: table-cell; line-height: 1.4; background: whitesmoke; } 498 | 499 | tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #222222; font-weight: bold; } 500 | 501 | p.tableblock > code:only-child { background: none; padding: 0; } 502 | 503 | p.tableblock { font-size: 1em; } 504 | 505 | td > div.verse { white-space: pre; } 506 | 507 | ol { margin-left: 1.75em; } 508 | 509 | ul li ol { margin-left: 1.5em; } 510 | 511 | dl dd { margin-left: 1.125em; } 512 | 513 | dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } 514 | 515 | ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; } 516 | 517 | ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; } 518 | 519 | ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; } 520 | 521 | ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1em; font-size: 0.85em; } 522 | 523 | ul.checklist li > p:first-child > input[type="checkbox"]:first-child { width: 1em; position: relative; top: 1px; } 524 | 525 | ul.inline { margin: 0 auto 0.625em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; } 526 | ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; } 527 | ul.inline > li > * { display: block; } 528 | 529 | .unstyled dl dt { font-weight: normal; font-style: normal; } 530 | 531 | ol.arabic { list-style-type: decimal; } 532 | 533 | ol.decimal { list-style-type: decimal-leading-zero; } 534 | 535 | ol.loweralpha { list-style-type: lower-alpha; } 536 | 537 | ol.upperalpha { list-style-type: upper-alpha; } 538 | 539 | ol.lowerroman { list-style-type: lower-roman; } 540 | 541 | ol.upperroman { list-style-type: upper-roman; } 542 | 543 | ol.lowergreek { list-style-type: lower-greek; } 544 | 545 | .hdlist > table, .colist > table { border: 0; background: none; } 546 | .hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } 547 | 548 | td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; } 549 | 550 | td.hdlist1 { font-weight: bold; padding-bottom: 1.25em; } 551 | 552 | .literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } 553 | 554 | .colist > table tr > td:first-of-type { padding: 0 0.75em; line-height: 1; } 555 | .colist > table tr > td:last-of-type { padding: 0.25em 0; } 556 | 557 | .thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } 558 | 559 | .imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } 560 | .imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } 561 | .imageblock > .title { margin-bottom: 0; } 562 | .imageblock.thumb, .imageblock.th { border-width: 6px; } 563 | .imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } 564 | 565 | .image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } 566 | .image.left { margin-right: 0.625em; } 567 | .image.right { margin-left: 0.625em; } 568 | 569 | a.image { text-decoration: none; display: inline-block; } 570 | a.image object { pointer-events: none; } 571 | 572 | sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; } 573 | sup.footnote a, sup.footnoteref a { text-decoration: none; } 574 | sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; } 575 | 576 | #footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } 577 | #footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; } 578 | #footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; } 579 | #footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; } 580 | #footnotes .footnote:last-of-type { margin-bottom: 0; } 581 | #content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } 582 | 583 | .gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; } 584 | .gist .file-data > table td.line-data { width: 99%; } 585 | 586 | div.unbreakable { page-break-inside: avoid; } 587 | 588 | .big { font-size: larger; } 589 | 590 | .small { font-size: smaller; } 591 | 592 | .underline { text-decoration: underline; } 593 | 594 | .overline { text-decoration: overline; } 595 | 596 | .line-through { text-decoration: line-through; } 597 | 598 | .aqua { color: #00bfbf; } 599 | 600 | .aqua-background { background-color: #00fafa; } 601 | 602 | .black { color: black; } 603 | 604 | .black-background { background-color: black; } 605 | 606 | .blue { color: #0000bf; } 607 | 608 | .blue-background { background-color: #0000fa; } 609 | 610 | .fuchsia { color: #bf00bf; } 611 | 612 | .fuchsia-background { background-color: #fa00fa; } 613 | 614 | .gray { color: #606060; } 615 | 616 | .gray-background { background-color: #7d7d7d; } 617 | 618 | .green { color: #006000; } 619 | 620 | .green-background { background-color: #007d00; } 621 | 622 | .lime { color: #00bf00; } 623 | 624 | .lime-background { background-color: #00fa00; } 625 | 626 | .maroon { color: #600000; } 627 | 628 | .maroon-background { background-color: #7d0000; } 629 | 630 | .navy { color: #000060; } 631 | 632 | .navy-background { background-color: #00007d; } 633 | 634 | .olive { color: #606000; } 635 | 636 | .olive-background { background-color: #7d7d00; } 637 | 638 | .purple { color: #600060; } 639 | 640 | .purple-background { background-color: #7d007d; } 641 | 642 | .red { color: #bf0000; } 643 | 644 | .red-background { background-color: #fa0000; } 645 | 646 | .silver { color: #909090; } 647 | 648 | .silver-background { background-color: #bcbcbc; } 649 | 650 | .teal { color: #006060; } 651 | 652 | .teal-background { background-color: #007d7d; } 653 | 654 | .white { color: #bfbfbf; } 655 | 656 | .white-background { background-color: #fafafa; } 657 | 658 | .yellow { color: #bfbf00; } 659 | 660 | .yellow-background { background-color: #fafa00; } 661 | 662 | span.icon > .fa { cursor: default; } 663 | 664 | .admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } 665 | .admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #207c98; } 666 | .admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } 667 | .admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } 668 | .admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } 669 | .admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } 670 | 671 | .conum[data-value] { display: inline-block; color: #fff !important; background-color: #222222; -webkit-border-radius: 100px; border-radius: 100px; 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; } 672 | .conum[data-value] * { color: #fff !important; } 673 | .conum[data-value] + b { display: none; } 674 | .conum[data-value]:after { content: attr(data-value); } 675 | pre .conum[data-value] { position: relative; top: -0.125em; } 676 | 677 | b.conum * { color: inherit !important; } 678 | 679 | .conum:not([data-value]):empty { display: none; } 680 | 681 | .literalblock pre, .listingblock pre { background: #eeeeee; } 682 | -------------------------------------------------------------------------------- /stylesheets/rubygems.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ 2 | /* ========================================================================== HTML5 display definitions ========================================================================== */ 3 | /** Correct `block` display not defined in IE 8/9. */ 4 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } 5 | 6 | /** Correct `inline-block` display not defined in IE 8/9. */ 7 | audio, canvas, video { display: inline-block; } 8 | 9 | /** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ 10 | audio:not([controls]) { display: none; height: 0; } 11 | 12 | /** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ 13 | [hidden], template { display: none; } 14 | 15 | script { display: none !important; } 16 | 17 | /* ========================================================================== Base ========================================================================== */ 18 | /** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ 19 | html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } 20 | 21 | /** Remove default margin. */ 22 | body { margin: 0; } 23 | 24 | /* ========================================================================== Links ========================================================================== */ 25 | /** Remove the gray background color from active links in IE 10. */ 26 | a { background: transparent; } 27 | 28 | /** Address `outline` inconsistency between Chrome and other browsers. */ 29 | a:focus { outline: thin dotted; } 30 | 31 | /** Improve readability when focused and also mouse hovered in all browsers. */ 32 | a:active, a:hover { outline: 0; } 33 | 34 | /* ========================================================================== Typography ========================================================================== */ 35 | /** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ 36 | h1 { font-size: 2em; margin: 0.67em 0; } 37 | 38 | /** Address styling not present in IE 8/9, Safari 5, and Chrome. */ 39 | abbr[title] { border-bottom: 1px dotted; } 40 | 41 | /** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ 42 | b, strong { font-weight: bold; } 43 | 44 | /** Address styling not present in Safari 5 and Chrome. */ 45 | dfn { font-style: italic; } 46 | 47 | /** Address differences between Firefox and other browsers. */ 48 | hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } 49 | 50 | /** Address styling not present in IE 8/9. */ 51 | mark { background: #ff0; color: #000; } 52 | 53 | /** Correct font family set oddly in Safari 5 and Chrome. */ 54 | code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } 55 | 56 | /** Improve readability of pre-formatted text in all browsers. */ 57 | pre { white-space: pre-wrap; } 58 | 59 | /** Set consistent quote types. */ 60 | q { quotes: "\201C" "\201D" "\2018" "\2019"; } 61 | 62 | /** Address inconsistent and variable font size in all browsers. */ 63 | small { font-size: 80%; } 64 | 65 | /** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ 66 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 67 | 68 | sup { top: -0.5em; } 69 | 70 | sub { bottom: -0.25em; } 71 | 72 | /* ========================================================================== Embedded content ========================================================================== */ 73 | /** Remove border when inside `a` element in IE 8/9. */ 74 | img { border: 0; } 75 | 76 | /** Correct overflow displayed oddly in IE 9. */ 77 | svg:not(:root) { overflow: hidden; } 78 | 79 | /* ========================================================================== Figures ========================================================================== */ 80 | /** Address margin not present in IE 8/9 and Safari 5. */ 81 | figure { margin: 0; } 82 | 83 | /* ========================================================================== Forms ========================================================================== */ 84 | /** Define consistent border, margin, and padding. */ 85 | fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } 86 | 87 | /** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ 88 | legend { border: 0; /* 1 */ padding: 0; /* 2 */ } 89 | 90 | /** 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. */ 91 | button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } 92 | 93 | /** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ 94 | button, input { line-height: normal; } 95 | 96 | /** 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. */ 97 | button, select { text-transform: none; } 98 | 99 | /** 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. */ 100 | button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } 101 | 102 | /** Re-set default cursor for disabled elements. */ 103 | button[disabled], html input[disabled] { cursor: default; } 104 | 105 | /** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ 106 | input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } 107 | 108 | /** 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). */ 109 | input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } 110 | 111 | /** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ 112 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 113 | 114 | /** Remove inner padding and border in Firefox 4+. */ 115 | button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } 116 | 117 | /** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ 118 | textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } 119 | 120 | /* ========================================================================== Tables ========================================================================== */ 121 | /** Remove most spacing between table cells. */ 122 | table { border-collapse: collapse; border-spacing: 0; } 123 | 124 | meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; } 125 | 126 | meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; } 127 | 128 | meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; } 129 | 130 | *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 131 | 132 | html, body { font-size: 100%; } 133 | 134 | body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } 135 | 136 | a:hover { cursor: pointer; } 137 | 138 | img, object, embed { max-width: 100%; height: auto; } 139 | 140 | object, embed { height: 100%; } 141 | 142 | img { -ms-interpolation-mode: bicubic; } 143 | 144 | #map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } 145 | 146 | .left { float: left !important; } 147 | 148 | .right { float: right !important; } 149 | 150 | .text-left { text-align: left !important; } 151 | 152 | .text-right { text-align: right !important; } 153 | 154 | .text-center { text-align: center !important; } 155 | 156 | .text-justify { text-align: justify !important; } 157 | 158 | .hide { display: none; } 159 | 160 | .antialiased, body { -webkit-font-smoothing: antialiased; } 161 | 162 | img { display: inline-block; vertical-align: middle; } 163 | 164 | textarea { height: auto; min-height: 50px; } 165 | 166 | select { width: 100%; } 167 | 168 | object, svg { display: inline-block; vertical-align: middle; } 169 | 170 | .center { margin-left: auto; margin-right: auto; } 171 | 172 | .spread { width: 100%; } 173 | 174 | p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } 175 | 176 | .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.4; color: #111111; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } 177 | 178 | /* Typography resets */ 179 | 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; direction: ltr; } 180 | 181 | /* Default Link Styles */ 182 | a { color: #ad141e; text-decoration: underline; line-height: inherit; } 183 | a:hover, a:focus { color: #ad141e; } 184 | a img { border: none; } 185 | 186 | /* Default paragraph styles */ 187 | p { font-family: inherit; font-weight: normal; font-size: 1em; line-height: 1.5; margin-bottom: 1.25em; text-rendering: optimizeLegibility; } 188 | p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } 189 | 190 | /* Default header styles */ 191 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Arial, sans-serif; font-weight: normal; font-style: normal; color: #111111; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2125em; } 192 | h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #5e5e5e; line-height: 0; } 193 | 194 | h1 { font-size: 2.125em; } 195 | 196 | h2 { font-size: 1.6875em; } 197 | 198 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } 199 | 200 | h4 { font-size: 1.125em; } 201 | 202 | h5 { font-size: 1.125em; } 203 | 204 | h6 { font-size: 1em; } 205 | 206 | hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } 207 | 208 | /* Helpful Typography Defaults */ 209 | em, i { font-style: italic; line-height: inherit; } 210 | 211 | strong, b { font-weight: bold; line-height: inherit; } 212 | 213 | small { font-size: 60%; line-height: inherit; } 214 | 215 | code { font-family: "Andale Mono", "monotype.com", "Lucida Console", monospace; font-weight: normal; color: #222222; } 216 | 217 | /* Lists */ 218 | ul, ol, dl { font-size: 1em; line-height: 1.5; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; } 219 | 220 | ul, ol { margin-left: 1.5em; } 221 | ul.no-bullet, ol.no-bullet { margin-left: 1.5em; } 222 | 223 | /* Unordered Lists */ 224 | ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } 225 | ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } 226 | ul.square { list-style-type: square; } 227 | ul.circle { list-style-type: circle; } 228 | ul.disc { list-style-type: disc; } 229 | ul.no-bullet { list-style: none; } 230 | 231 | /* Ordered Lists */ 232 | ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } 233 | 234 | /* Definition Lists */ 235 | dl dt { margin-bottom: 0.3125em; font-weight: bold; } 236 | dl dd { margin-bottom: 1.25em; } 237 | 238 | /* Abbreviations */ 239 | abbr, acronym { text-transform: uppercase; font-size: 90%; color: #222222; border-bottom: 1px dotted #dddddd; cursor: help; } 240 | 241 | abbr { text-transform: none; } 242 | 243 | /* Blockquotes */ 244 | blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; } 245 | blockquote cite { display: block; font-size: inherit; color: #555555; } 246 | blockquote cite:before { content: "\2014 \0020"; } 247 | blockquote cite a, blockquote cite a:visited { color: #555555; } 248 | 249 | blockquote, blockquote p { line-height: 1.5; color: #6f6f6f; } 250 | 251 | /* Microformats */ 252 | .vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } 253 | .vcard li { margin: 0; display: block; } 254 | .vcard .fn { font-weight: bold; font-size: 0.9375em; } 255 | 256 | .vevent .summary { font-weight: bold; } 257 | .vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } 258 | 259 | @media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 260 | h1 { font-size: 2.75em; } 261 | h2 { font-size: 2.3125em; } 262 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } 263 | h4 { font-size: 1.4375em; } } 264 | /* Tables */ 265 | table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } 266 | table thead, table tfoot { background: whitesmoke; font-weight: bold; } 267 | 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: #222222; text-align: left; } 268 | table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } 269 | table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; } 270 | table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.2; } 271 | 272 | body { tab-size: 4; } 273 | 274 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 275 | 276 | .clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } 277 | .clearfix:after, .float-group:after { clear: both; } 278 | 279 | *:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 2px; background-color: #eeeeee; -webkit-border-radius: 0; border-radius: 0; line-height: inherit; } 280 | 281 | pre, pre > code { line-height: 1.5; color: white; font-family: Monaco, Consolas, "Courier New", Courier, Sans-serif; font-weight: normal; } 282 | 283 | em em { font-style: normal; } 284 | 285 | strong strong { font-weight: normal; } 286 | 287 | .keyseq { color: #555555; } 288 | 289 | kbd { font-family: "Andale Mono", "monotype.com", "Lucida Console", monospace; display: inline-block; color: #222222; font-size: 0.65em; line-height: 1.45; background-color: #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 white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; } 290 | 291 | .keyseq kbd:first-child { margin-left: 0; } 292 | 293 | .keyseq kbd:last-child { margin-right: 0; } 294 | 295 | .menuseq, .menu { color: #090909; } 296 | 297 | b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; } 298 | 299 | b.button:before { content: "["; padding: 0 3px 0 2px; } 300 | 301 | b.button:after { content: "]"; padding: 0 2px 0 3px; } 302 | 303 | p a > code:hover { color: #151515; } 304 | 305 | #header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; } 306 | #header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } 307 | #header:after, #content:after, #footnotes:after, #footer:after { clear: both; } 308 | 309 | #content { margin-top: 1.25em; } 310 | 311 | #content:before { content: none; } 312 | 313 | #header > h1:first-child { color: black; margin-top: 2.25rem; margin-bottom: 0; } 314 | #header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #dddddd; } 315 | #header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; } 316 | #header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #555555; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; } 317 | #header .details span:first-child { margin-left: -0.125em; } 318 | #header .details span.email a { color: #6f6f6f; } 319 | #header .details br { display: none; } 320 | #header .details br + span:before { content: "\00a0\2013\00a0"; } 321 | #header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #6f6f6f; } 322 | #header .details br + span#revremark:before { content: "\00a0|\00a0"; } 323 | #header #revnumber { text-transform: capitalize; } 324 | #header #revnumber:after { content: "\00a0"; } 325 | 326 | #content > h1:first-child:not([class]) { color: black; border-bottom: 1px solid #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; } 327 | 328 | #toc { border-bottom: 1px solid #dddddd; padding-bottom: 0.5em; } 329 | #toc > ul { margin-left: 0.125em; } 330 | #toc ul.sectlevel0 > li > a { font-style: italic; } 331 | #toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; } 332 | #toc ul { font-family: "Helvetica Neue", "Helvetica", Arial, sans-serif; list-style-type: none; } 333 | #toc li { line-height: 1.3334; margin-top: 0.3334em; } 334 | #toc a { text-decoration: none; } 335 | #toc a:active { text-decoration: underline; } 336 | 337 | #toctitle { color: #111111; font-size: 1.2em; } 338 | 339 | @media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; } 340 | body.toc2 { padding-left: 15em; padding-right: 0; } 341 | #toc.toc2 { margin-top: 0 !important; background-color: #f2f2f2; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; } 342 | #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; } 343 | #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; } 344 | #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; } 345 | #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } 346 | body.toc2.toc-right { padding-left: 0; padding-right: 15em; } 347 | body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } } 348 | @media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; } 349 | #toc.toc2 { width: 20em; } 350 | #toc.toc2 #toctitle { font-size: 1.375em; } 351 | #toc.toc2 > ul { font-size: 0.95em; } 352 | #toc.toc2 ul ul { padding-left: 1.25em; } 353 | body.toc2.toc-right { padding-left: 0; padding-right: 20em; } } 354 | #content #toc { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 355 | #content #toc > :first-child { margin-top: 0; } 356 | #content #toc > :last-child { margin-bottom: 0; } 357 | 358 | #footer { max-width: 100%; background-color: #222222; padding: 1.25em; } 359 | 360 | #footer-text { color: #dddddd; line-height: 1.35; } 361 | 362 | .sect1 { padding-bottom: 0.625em; } 363 | 364 | @media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } } 365 | .sect1 + .sect1 { border-top: 1px solid #dddddd; } 366 | 367 | #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: normal; } 368 | #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; } 369 | #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; } 370 | #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: #111111; text-decoration: none; } 371 | #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: #040404; } 372 | 373 | .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; } 374 | 375 | .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; } 376 | 377 | table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; } 378 | 379 | .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: black; } 380 | 381 | table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } 382 | 383 | .admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; } 384 | .admonitionblock > table td.icon { text-align: center; width: 80px; } 385 | .admonitionblock > table td.icon img { max-width: none; } 386 | .admonitionblock > table td.icon .title { font-weight: bold; font-family: "Helvetica Neue", "Helvetica", Arial, sans-serif; text-transform: uppercase; } 387 | .admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #555555; } 388 | .admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } 389 | 390 | .exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 391 | .exampleblock > .content > :first-child { margin-top: 0; } 392 | .exampleblock > .content > :last-child { margin-bottom: 0; } 393 | 394 | .sidebarblock { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 395 | .sidebarblock > :first-child { margin-top: 0; } 396 | .sidebarblock > :last-child { margin-bottom: 0; } 397 | .sidebarblock > .content > .title { color: #111111; margin-top: 0; } 398 | 399 | .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; } 400 | 401 | .literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #333333; } 402 | .sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; } 403 | 404 | .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 0 solid #dddddd; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 10px; font-size: 0.8125em; } 405 | .literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } 406 | @media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } } 407 | @media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } } 408 | 409 | .literalblock.output pre { color: #333333; background-color: white; } 410 | 411 | .listingblock pre.highlightjs { padding: 0; } 412 | .listingblock pre.highlightjs > code { padding: 10px; -webkit-border-radius: 0; border-radius: 0; } 413 | 414 | .listingblock > .content { position: relative; } 415 | 416 | .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: #999; } 417 | 418 | .listingblock:hover code[data-lang]:before { display: block; } 419 | 420 | .listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } 421 | 422 | .listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; } 423 | 424 | table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; } 425 | 426 | table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.5; } 427 | 428 | table.pyhltable td.code { padding-left: .75em; padding-right: 0; } 429 | 430 | pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; } 431 | 432 | pre.pygments .lineno { display: inline-block; margin-right: .25em; } 433 | 434 | table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; } 435 | 436 | .quoteblock { margin: 0 1em 1.25em 1.5em; display: table; } 437 | .quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; } 438 | .quoteblock blockquote, .quoteblock blockquote p { color: #6f6f6f; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; } 439 | .quoteblock blockquote { margin: 0; padding: 0; border: 0; } 440 | .quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #111111; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } 441 | .quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } 442 | .quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; } 443 | .quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #555555; } 444 | .quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; } 445 | .quoteblock .quoteblock blockquote:before { display: none; } 446 | 447 | .verseblock { margin: 0 1em 1.25em 1em; } 448 | .verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #6f6f6f; font-weight: 300; text-rendering: optimizeLegibility; } 449 | .verseblock pre strong { font-weight: 400; } 450 | .verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; } 451 | 452 | .quoteblock .attribution, .verseblock .attribution { font-size: inherit; line-height: 1.45; font-style: italic; } 453 | .quoteblock .attribution br, .verseblock .attribution br { display: none; } 454 | .quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #555555; } 455 | 456 | .quoteblock.abstract { margin: 0 0 1.25em 0; display: block; } 457 | .quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; } 458 | .quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; } 459 | 460 | table.tableblock { max-width: 100%; border-collapse: separate; } 461 | table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; } 462 | 463 | table.tableblock, th.tableblock, td.tableblock { border: 0 solid #dddddd; } 464 | 465 | table.grid-all th.tableblock, table.grid-all td.tableblock { border-width: 0 1px 1px 0; } 466 | 467 | table.grid-all tfoot > tr > th.tableblock, table.grid-all tfoot > tr > td.tableblock { border-width: 1px 1px 0 0; } 468 | 469 | table.grid-cols th.tableblock, table.grid-cols td.tableblock { border-width: 0 1px 0 0; } 470 | 471 | table.grid-all * > tr > .tableblock:last-child, table.grid-cols * > tr > .tableblock:last-child { border-right-width: 0; } 472 | 473 | table.grid-rows th.tableblock, table.grid-rows td.tableblock { border-width: 0 0 1px 0; } 474 | 475 | table.grid-all tbody > tr:last-child > th.tableblock, table.grid-all tbody > tr:last-child > td.tableblock, table.grid-all thead:last-child > tr > th.tableblock, table.grid-rows tbody > tr:last-child > th.tableblock, table.grid-rows tbody > tr:last-child > td.tableblock, table.grid-rows thead:last-child > tr > th.tableblock { border-bottom-width: 0; } 476 | 477 | table.grid-rows tfoot > tr > th.tableblock, table.grid-rows tfoot > tr > td.tableblock { border-width: 1px 0 0 0; } 478 | 479 | table.frame-all { border-width: 1px; } 480 | 481 | table.frame-sides { border-width: 0 1px; } 482 | 483 | table.frame-topbot { border-width: 1px 0; } 484 | 485 | th.halign-left, td.halign-left { text-align: left; } 486 | 487 | th.halign-right, td.halign-right { text-align: right; } 488 | 489 | th.halign-center, td.halign-center { text-align: center; } 490 | 491 | th.valign-top, td.valign-top { vertical-align: top; } 492 | 493 | th.valign-bottom, td.valign-bottom { vertical-align: bottom; } 494 | 495 | th.valign-middle, td.valign-middle { vertical-align: middle; } 496 | 497 | table thead th, table tfoot th { font-weight: bold; } 498 | 499 | tbody tr th { display: table-cell; line-height: 1.2; background: whitesmoke; } 500 | 501 | tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #222222; font-weight: bold; } 502 | 503 | p.tableblock > code:only-child { background: none; padding: 0; } 504 | 505 | p.tableblock { font-size: 1em; } 506 | 507 | td > div.verse { white-space: pre; } 508 | 509 | ol { margin-left: 1.75em; } 510 | 511 | ul li ol { margin-left: 1.5em; } 512 | 513 | dl dd { margin-left: 1.125em; } 514 | 515 | dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } 516 | 517 | ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; } 518 | 519 | ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; } 520 | 521 | ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; } 522 | 523 | ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1em; font-size: 0.85em; } 524 | 525 | ul.checklist li > p:first-child > input[type="checkbox"]:first-child { width: 1em; position: relative; top: 1px; } 526 | 527 | ul.inline { margin: 0 auto 0.625em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; } 528 | ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; } 529 | ul.inline > li > * { display: block; } 530 | 531 | .unstyled dl dt { font-weight: normal; font-style: normal; } 532 | 533 | ol.arabic { list-style-type: decimal; } 534 | 535 | ol.decimal { list-style-type: decimal-leading-zero; } 536 | 537 | ol.loweralpha { list-style-type: lower-alpha; } 538 | 539 | ol.upperalpha { list-style-type: upper-alpha; } 540 | 541 | ol.lowerroman { list-style-type: lower-roman; } 542 | 543 | ol.upperroman { list-style-type: upper-roman; } 544 | 545 | ol.lowergreek { list-style-type: lower-greek; } 546 | 547 | .hdlist > table, .colist > table { border: 0; background: none; } 548 | .hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } 549 | 550 | td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; } 551 | 552 | td.hdlist1 { font-weight: bold; padding-bottom: 1.25em; } 553 | 554 | .literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } 555 | 556 | .colist > table tr > td:first-of-type { padding: 0 0.75em; line-height: 1; } 557 | .colist > table tr > td:last-of-type { padding: 0.25em 0; } 558 | 559 | .thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } 560 | 561 | .imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } 562 | .imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } 563 | .imageblock > .title { margin-bottom: 0; } 564 | .imageblock.thumb, .imageblock.th { border-width: 6px; } 565 | .imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } 566 | 567 | .image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } 568 | .image.left { margin-right: 0.625em; } 569 | .image.right { margin-left: 0.625em; } 570 | 571 | a.image { text-decoration: none; display: inline-block; } 572 | a.image object { pointer-events: none; } 573 | 574 | sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; } 575 | sup.footnote a, sup.footnoteref a { text-decoration: none; } 576 | sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; } 577 | 578 | #footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } 579 | #footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; } 580 | #footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; } 581 | #footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; } 582 | #footnotes .footnote:last-of-type { margin-bottom: 0; } 583 | #content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } 584 | 585 | .gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; } 586 | .gist .file-data > table td.line-data { width: 99%; } 587 | 588 | div.unbreakable { page-break-inside: avoid; } 589 | 590 | .big { font-size: larger; } 591 | 592 | .small { font-size: smaller; } 593 | 594 | .underline { text-decoration: underline; } 595 | 596 | .overline { text-decoration: overline; } 597 | 598 | .line-through { text-decoration: line-through; } 599 | 600 | .aqua { color: #00bfbf; } 601 | 602 | .aqua-background { background-color: #00fafa; } 603 | 604 | .black { color: black; } 605 | 606 | .black-background { background-color: black; } 607 | 608 | .blue { color: #0000bf; } 609 | 610 | .blue-background { background-color: #0000fa; } 611 | 612 | .fuchsia { color: #bf00bf; } 613 | 614 | .fuchsia-background { background-color: #fa00fa; } 615 | 616 | .gray { color: #606060; } 617 | 618 | .gray-background { background-color: #7d7d7d; } 619 | 620 | .green { color: #006000; } 621 | 622 | .green-background { background-color: #007d00; } 623 | 624 | .lime { color: #00bf00; } 625 | 626 | .lime-background { background-color: #00fa00; } 627 | 628 | .maroon { color: #600000; } 629 | 630 | .maroon-background { background-color: #7d0000; } 631 | 632 | .navy { color: #000060; } 633 | 634 | .navy-background { background-color: #00007d; } 635 | 636 | .olive { color: #606000; } 637 | 638 | .olive-background { background-color: #7d7d00; } 639 | 640 | .purple { color: #600060; } 641 | 642 | .purple-background { background-color: #7d007d; } 643 | 644 | .red { color: #bf0000; } 645 | 646 | .red-background { background-color: #fa0000; } 647 | 648 | .silver { color: #909090; } 649 | 650 | .silver-background { background-color: #bcbcbc; } 651 | 652 | .teal { color: #006060; } 653 | 654 | .teal-background { background-color: #007d7d; } 655 | 656 | .white { color: #bfbfbf; } 657 | 658 | .white-background { background-color: #fafafa; } 659 | 660 | .yellow { color: #bfbf00; } 661 | 662 | .yellow-background { background-color: #fafa00; } 663 | 664 | span.icon > .fa { cursor: default; } 665 | 666 | .admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } 667 | .admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #820f16; } 668 | .admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } 669 | .admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } 670 | .admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } 671 | .admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } 672 | 673 | .conum[data-value] { display: inline-block; color: #fff !important; background-color: #222222; -webkit-border-radius: 100px; border-radius: 100px; 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; } 674 | .conum[data-value] * { color: #fff !important; } 675 | .conum[data-value] + b { display: none; } 676 | .conum[data-value]:after { content: attr(data-value); } 677 | pre .conum[data-value] { position: relative; top: -0.125em; } 678 | 679 | b.conum * { color: inherit !important; } 680 | 681 | .conum:not([data-value]):empty { display: none; } 682 | 683 | .literalblock pre, .listingblock pre { background: #333333; } 684 | -------------------------------------------------------------------------------- /stylesheets/colony.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ 2 | /* ========================================================================== HTML5 display definitions ========================================================================== */ 3 | /** Correct `block` display not defined in IE 8/9. */ 4 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } 5 | 6 | /** Correct `inline-block` display not defined in IE 8/9. */ 7 | audio, canvas, video { display: inline-block; } 8 | 9 | /** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ 10 | audio:not([controls]) { display: none; height: 0; } 11 | 12 | /** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ 13 | [hidden], template { display: none; } 14 | 15 | script { display: none !important; } 16 | 17 | /* ========================================================================== Base ========================================================================== */ 18 | /** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ 19 | html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } 20 | 21 | /** Remove default margin. */ 22 | body { margin: 0; } 23 | 24 | /* ========================================================================== Links ========================================================================== */ 25 | /** Remove the gray background color from active links in IE 10. */ 26 | a { background: transparent; } 27 | 28 | /** Address `outline` inconsistency between Chrome and other browsers. */ 29 | a:focus { outline: thin dotted; } 30 | 31 | /** Improve readability when focused and also mouse hovered in all browsers. */ 32 | a:active, a:hover { outline: 0; } 33 | 34 | /* ========================================================================== Typography ========================================================================== */ 35 | /** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ 36 | h1 { font-size: 2em; margin: 0.67em 0; } 37 | 38 | /** Address styling not present in IE 8/9, Safari 5, and Chrome. */ 39 | abbr[title] { border-bottom: 1px dotted; } 40 | 41 | /** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ 42 | b, strong { font-weight: bold; } 43 | 44 | /** Address styling not present in Safari 5 and Chrome. */ 45 | dfn { font-style: italic; } 46 | 47 | /** Address differences between Firefox and other browsers. */ 48 | hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } 49 | 50 | /** Address styling not present in IE 8/9. */ 51 | mark { background: #ff0; color: #000; } 52 | 53 | /** Correct font family set oddly in Safari 5 and Chrome. */ 54 | code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } 55 | 56 | /** Improve readability of pre-formatted text in all browsers. */ 57 | pre { white-space: pre-wrap; } 58 | 59 | /** Set consistent quote types. */ 60 | q { quotes: "\201C" "\201D" "\2018" "\2019"; } 61 | 62 | /** Address inconsistent and variable font size in all browsers. */ 63 | small { font-size: 80%; } 64 | 65 | /** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ 66 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 67 | 68 | sup { top: -0.5em; } 69 | 70 | sub { bottom: -0.25em; } 71 | 72 | /* ========================================================================== Embedded content ========================================================================== */ 73 | /** Remove border when inside `a` element in IE 8/9. */ 74 | img { border: 0; } 75 | 76 | /** Correct overflow displayed oddly in IE 9. */ 77 | svg:not(:root) { overflow: hidden; } 78 | 79 | /* ========================================================================== Figures ========================================================================== */ 80 | /** Address margin not present in IE 8/9 and Safari 5. */ 81 | figure { margin: 0; } 82 | 83 | /* ========================================================================== Forms ========================================================================== */ 84 | /** Define consistent border, margin, and padding. */ 85 | fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } 86 | 87 | /** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ 88 | legend { border: 0; /* 1 */ padding: 0; /* 2 */ } 89 | 90 | /** 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. */ 91 | button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } 92 | 93 | /** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ 94 | button, input { line-height: normal; } 95 | 96 | /** 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. */ 97 | button, select { text-transform: none; } 98 | 99 | /** 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. */ 100 | button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } 101 | 102 | /** Re-set default cursor for disabled elements. */ 103 | button[disabled], html input[disabled] { cursor: default; } 104 | 105 | /** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ 106 | input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } 107 | 108 | /** 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). */ 109 | input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } 110 | 111 | /** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ 112 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 113 | 114 | /** Remove inner padding and border in Firefox 4+. */ 115 | button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } 116 | 117 | /** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ 118 | textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } 119 | 120 | /* ========================================================================== Tables ========================================================================== */ 121 | /** Remove most spacing between table cells. */ 122 | table { border-collapse: collapse; border-spacing: 0; } 123 | 124 | meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; } 125 | 126 | meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; } 127 | 128 | meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; } 129 | 130 | *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 131 | 132 | html, body { font-size: 100%; } 133 | 134 | body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } 135 | 136 | a:hover { cursor: pointer; } 137 | 138 | img, object, embed { max-width: 100%; height: auto; } 139 | 140 | object, embed { height: 100%; } 141 | 142 | img { -ms-interpolation-mode: bicubic; } 143 | 144 | #map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } 145 | 146 | .left { float: left !important; } 147 | 148 | .right { float: right !important; } 149 | 150 | .text-left { text-align: left !important; } 151 | 152 | .text-right { text-align: right !important; } 153 | 154 | .text-center { text-align: center !important; } 155 | 156 | .text-justify { text-align: justify !important; } 157 | 158 | .hide { display: none; } 159 | 160 | .antialiased, body { -webkit-font-smoothing: antialiased; } 161 | 162 | img { display: inline-block; vertical-align: middle; } 163 | 164 | textarea { height: auto; min-height: 50px; } 165 | 166 | select { width: 100%; } 167 | 168 | object, svg { display: inline-block; vertical-align: middle; } 169 | 170 | .center { margin-left: auto; margin-right: auto; } 171 | 172 | .spread { width: 100%; } 173 | 174 | p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } 175 | 176 | .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.4; color: #003b6b; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } 177 | 178 | /* Typography resets */ 179 | 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; direction: ltr; } 180 | 181 | /* Default Link Styles */ 182 | a { color: #00579e; text-decoration: none; line-height: inherit; } 183 | a:hover, a:focus { color: #333333; } 184 | a img { border: none; } 185 | 186 | /* Default paragraph styles */ 187 | p { font-family: Arial, sans-serif; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; text-rendering: optimizeLegibility; } 188 | p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } 189 | 190 | /* Default header styles */ 191 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: Arial, sans-serif; font-weight: normal; font-style: normal; color: #7b2d00; text-rendering: optimizeLegibility; margin-top: 0.5em; margin-bottom: 0.5em; line-height: 1.2125em; } 192 | h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #ff6b15; line-height: 0; } 193 | 194 | h1 { font-size: 2.125em; } 195 | 196 | h2 { font-size: 1.6875em; } 197 | 198 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } 199 | 200 | h4 { font-size: 1.125em; } 201 | 202 | h5 { font-size: 1.125em; } 203 | 204 | h6 { font-size: 1em; } 205 | 206 | hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } 207 | 208 | /* Helpful Typography Defaults */ 209 | em, i { font-style: italic; line-height: inherit; } 210 | 211 | strong, b { font-weight: bold; line-height: inherit; } 212 | 213 | small { font-size: 60%; line-height: inherit; } 214 | 215 | code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: bold; color: #003426; } 216 | 217 | /* Lists */ 218 | ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; list-style-position: outside; font-family: Arial, sans-serif; } 219 | 220 | ul, ol { margin-left: 1.5em; } 221 | ul.no-bullet, ol.no-bullet { margin-left: 1.5em; } 222 | 223 | /* Unordered Lists */ 224 | ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } 225 | ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } 226 | ul.square { list-style-type: square; } 227 | ul.circle { list-style-type: circle; } 228 | ul.disc { list-style-type: disc; } 229 | ul.no-bullet { list-style: none; } 230 | 231 | /* Ordered Lists */ 232 | ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } 233 | 234 | /* Definition Lists */ 235 | dl dt { margin-bottom: 0.3em; font-weight: bold; } 236 | dl dd { margin-bottom: 0.75em; } 237 | 238 | /* Abbreviations */ 239 | abbr, acronym { text-transform: uppercase; font-size: 90%; color: black; border-bottom: 1px dotted #dddddd; cursor: help; } 240 | 241 | abbr { text-transform: none; } 242 | 243 | /* Blockquotes */ 244 | blockquote { margin: 0 0 0.75em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; } 245 | blockquote cite { display: block; font-size: 0.8125em; color: #e15200; } 246 | blockquote cite:before { content: "\2014 \0020"; } 247 | blockquote cite a, blockquote cite a:visited { color: #e15200; } 248 | 249 | blockquote, blockquote p { line-height: 1.6; color: #333333; } 250 | 251 | /* Microformats */ 252 | .vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } 253 | .vcard li { margin: 0; display: block; } 254 | .vcard .fn { font-weight: bold; font-size: 0.9375em; } 255 | 256 | .vevent .summary { font-weight: bold; } 257 | .vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } 258 | 259 | @media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 260 | h1 { font-size: 2.75em; } 261 | h2 { font-size: 2.3125em; } 262 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } 263 | h4 { font-size: 1.4375em; } } 264 | /* Tables */ 265 | table { background: white; margin-bottom: 1.25em; border: solid 1px #d8d8ce; } 266 | table thead, table tfoot { background: -webkit-linear-gradient(top, #add386, #90b66a); font-weight: bold; } 267 | 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: white; text-align: left; } 268 | table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #6d6e71; } 269 | table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #edf2f2; } 270 | table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; } 271 | 272 | body { tab-size: 4; } 273 | 274 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 275 | 276 | a:hover, a:focus { text-decoration: underline; } 277 | 278 | .clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } 279 | .clearfix:after, .float-group:after { clear: both; } 280 | 281 | *:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 3px 2px 1px 2px; background-color: #eeeeee; border: 1px solid #dddddd; -webkit-border-radius: 0; border-radius: 0; line-height: inherit; } 282 | 283 | pre, pre > code { line-height: 1.6; color: black; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } 284 | 285 | em em { font-style: normal; } 286 | 287 | strong strong { font-weight: normal; } 288 | 289 | .keyseq { color: #333333; } 290 | 291 | kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: black; font-size: 0.65em; line-height: 1.45; background-color: #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 white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; } 292 | 293 | .keyseq kbd:first-child { margin-left: 0; } 294 | 295 | .keyseq kbd:last-child { margin-right: 0; } 296 | 297 | .menuseq, .menu { color: black; } 298 | 299 | b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; } 300 | 301 | b.button:before { content: "["; padding: 0 3px 0 2px; } 302 | 303 | b.button:after { content: "]"; padding: 0 2px 0 3px; } 304 | 305 | #header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 1.5em; padding-right: 1.5em; } 306 | #header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } 307 | #header:after, #content:after, #footnotes:after, #footer:after { clear: both; } 308 | 309 | #content { margin-top: 1.25em; } 310 | 311 | #content:before { content: none; } 312 | 313 | #header > h1:first-child { color: #7b2d00; margin-top: 2.25rem; margin-bottom: 0; } 314 | #header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #dddddd; } 315 | #header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; } 316 | #header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #e15200; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; } 317 | #header .details span:first-child { margin-left: -0.125em; } 318 | #header .details span.email a { color: #333333; } 319 | #header .details br { display: none; } 320 | #header .details br + span:before { content: "\00a0\2013\00a0"; } 321 | #header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #333333; } 322 | #header .details br + span#revremark:before { content: "\00a0|\00a0"; } 323 | #header #revnumber { text-transform: capitalize; } 324 | #header #revnumber:after { content: "\00a0"; } 325 | 326 | #content > h1:first-child:not([class]) { color: #7b2d00; border-bottom: 1px solid #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; } 327 | 328 | #toc { border-bottom: 0 solid #dddddd; padding-bottom: 0.5em; } 329 | #toc > ul { margin-left: 0.125em; } 330 | #toc ul.sectlevel0 > li > a { font-style: italic; } 331 | #toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; } 332 | #toc ul { font-family: Arial, sans-serif; list-style-type: none; } 333 | #toc li { line-height: 1.3334; margin-top: 0.3334em; } 334 | #toc a { text-decoration: none; } 335 | #toc a:active { text-decoration: underline; } 336 | 337 | #toctitle { color: #003b6b; font-size: 1.2em; } 338 | 339 | @media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; } 340 | body.toc2 { padding-left: 15em; padding-right: 0; } 341 | #toc.toc2 { margin-top: 0 !important; background-color: white; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; } 342 | #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; } 343 | #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; } 344 | #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; } 345 | #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } 346 | body.toc2.toc-right { padding-left: 0; padding-right: 15em; } 347 | body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } } 348 | @media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; } 349 | #toc.toc2 { width: 20em; } 350 | #toc.toc2 #toctitle { font-size: 1.375em; } 351 | #toc.toc2 > ul { font-size: 0.95em; } 352 | #toc.toc2 ul ul { padding-left: 1.25em; } 353 | body.toc2.toc-right { padding-left: 0; padding-right: 20em; } } 354 | #content #toc { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 355 | #content #toc > :first-child { margin-top: 0; } 356 | #content #toc > :last-child { margin-bottom: 0; } 357 | 358 | #footer { max-width: 100%; background-color: none; padding: 1.25em; } 359 | 360 | #footer-text { color: black; line-height: 1.44; } 361 | 362 | .sect1 { padding-bottom: 0.625em; } 363 | 364 | @media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } } 365 | .sect1 + .sect1 { border-top: 0 solid #dddddd; } 366 | 367 | #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: normal; } 368 | #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; } 369 | #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; } 370 | #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: #7b2d00; text-decoration: none; } 371 | #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: #622400; } 372 | 373 | .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; } 374 | 375 | .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; } 376 | 377 | table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; } 378 | 379 | .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: #7b2d00; } 380 | 381 | table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } 382 | 383 | .admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; } 384 | .admonitionblock > table td.icon { text-align: center; width: 80px; } 385 | .admonitionblock > table td.icon img { max-width: none; } 386 | .admonitionblock > table td.icon .title { font-weight: bold; font-family: Arial, sans-serif; text-transform: uppercase; } 387 | .admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #e15200; } 388 | .admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } 389 | 390 | .exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 391 | .exampleblock > .content > :first-child { margin-top: 0; } 392 | .exampleblock > .content > :last-child { margin-bottom: 0; } 393 | 394 | .sidebarblock { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 395 | .sidebarblock > :first-child { margin-top: 0; } 396 | .sidebarblock > :last-child { margin-bottom: 0; } 397 | .sidebarblock > .content > .title { color: #003b6b; margin-top: 0; } 398 | 399 | .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; } 400 | 401 | .literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #eeeeee; } 402 | .sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; } 403 | 404 | .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px dashed #666666; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 1.25em 1.5625em 1.125em 1.5625em; font-size: 0.8125em; } 405 | .literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } 406 | @media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } } 407 | @media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } } 408 | 409 | .literalblock.output pre { color: #eeeeee; background-color: black; } 410 | 411 | .listingblock pre.highlightjs { padding: 0; } 412 | .listingblock pre.highlightjs > code { padding: 1.25em 1.5625em 1.125em 1.5625em; -webkit-border-radius: 0; border-radius: 0; } 413 | 414 | .listingblock > .content { position: relative; } 415 | 416 | .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: #999; } 417 | 418 | .listingblock:hover code[data-lang]:before { display: block; } 419 | 420 | .listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } 421 | 422 | .listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; } 423 | 424 | table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; } 425 | 426 | table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.6; } 427 | 428 | table.pyhltable td.code { padding-left: .75em; padding-right: 0; } 429 | 430 | pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; } 431 | 432 | pre.pygments .lineno { display: inline-block; margin-right: .25em; } 433 | 434 | table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; } 435 | 436 | .quoteblock { margin: 0 1em 0.75em 1.5em; display: table; } 437 | .quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; } 438 | .quoteblock blockquote, .quoteblock blockquote p { color: #333333; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; } 439 | .quoteblock blockquote { margin: 0; padding: 0; border: 0; } 440 | .quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #003b6b; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } 441 | .quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } 442 | .quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; } 443 | .quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #e15200; } 444 | .quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; } 445 | .quoteblock .quoteblock blockquote:before { display: none; } 446 | 447 | .verseblock { margin: 0 1em 0.75em 1em; } 448 | .verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #333333; font-weight: 300; text-rendering: optimizeLegibility; } 449 | .verseblock pre strong { font-weight: 400; } 450 | .verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; } 451 | 452 | .quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; } 453 | .quoteblock .attribution br, .verseblock .attribution br { display: none; } 454 | .quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #e15200; } 455 | 456 | .quoteblock.abstract { margin: 0 0 0.75em 0; display: block; } 457 | .quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; } 458 | .quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; } 459 | 460 | table.tableblock { max-width: 100%; border-collapse: separate; } 461 | table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; } 462 | 463 | table.tableblock, th.tableblock, td.tableblock { border: 0 solid #d8d8ce; } 464 | 465 | table.grid-all th.tableblock, table.grid-all td.tableblock { border-width: 0 1px 1px 0; } 466 | 467 | table.grid-all tfoot > tr > th.tableblock, table.grid-all tfoot > tr > td.tableblock { border-width: 1px 1px 0 0; } 468 | 469 | table.grid-cols th.tableblock, table.grid-cols td.tableblock { border-width: 0 1px 0 0; } 470 | 471 | table.grid-all * > tr > .tableblock:last-child, table.grid-cols * > tr > .tableblock:last-child { border-right-width: 0; } 472 | 473 | table.grid-rows th.tableblock, table.grid-rows td.tableblock { border-width: 0 0 1px 0; } 474 | 475 | table.grid-all tbody > tr:last-child > th.tableblock, table.grid-all tbody > tr:last-child > td.tableblock, table.grid-all thead:last-child > tr > th.tableblock, table.grid-rows tbody > tr:last-child > th.tableblock, table.grid-rows tbody > tr:last-child > td.tableblock, table.grid-rows thead:last-child > tr > th.tableblock { border-bottom-width: 0; } 476 | 477 | table.grid-rows tfoot > tr > th.tableblock, table.grid-rows tfoot > tr > td.tableblock { border-width: 1px 0 0 0; } 478 | 479 | table.frame-all { border-width: 1px; } 480 | 481 | table.frame-sides { border-width: 0 1px; } 482 | 483 | table.frame-topbot { border-width: 1px 0; } 484 | 485 | th.halign-left, td.halign-left { text-align: left; } 486 | 487 | th.halign-right, td.halign-right { text-align: right; } 488 | 489 | th.halign-center, td.halign-center { text-align: center; } 490 | 491 | th.valign-top, td.valign-top { vertical-align: top; } 492 | 493 | th.valign-bottom, td.valign-bottom { vertical-align: bottom; } 494 | 495 | th.valign-middle, td.valign-middle { vertical-align: middle; } 496 | 497 | table thead th, table tfoot th { font-weight: bold; } 498 | 499 | tbody tr th { display: table-cell; line-height: 1.4; background: -webkit-linear-gradient(top, #add386, #90b66a); } 500 | 501 | tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: white; font-weight: bold; } 502 | 503 | p.tableblock > code:only-child { background: none; padding: 0; } 504 | 505 | p.tableblock { font-size: 1em; } 506 | 507 | td > div.verse { white-space: pre; } 508 | 509 | ol { margin-left: 1.75em; } 510 | 511 | ul li ol { margin-left: 1.5em; } 512 | 513 | dl dd { margin-left: 1.125em; } 514 | 515 | dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } 516 | 517 | ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.375em; } 518 | 519 | ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; } 520 | 521 | ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; } 522 | 523 | ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1em; font-size: 0.85em; } 524 | 525 | ul.checklist li > p:first-child > input[type="checkbox"]:first-child { width: 1em; position: relative; top: 1px; } 526 | 527 | ul.inline { margin: 0 auto 0.375em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; } 528 | ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; } 529 | ul.inline > li > * { display: block; } 530 | 531 | .unstyled dl dt { font-weight: normal; font-style: normal; } 532 | 533 | ol.arabic { list-style-type: decimal; } 534 | 535 | ol.decimal { list-style-type: decimal-leading-zero; } 536 | 537 | ol.loweralpha { list-style-type: lower-alpha; } 538 | 539 | ol.upperalpha { list-style-type: upper-alpha; } 540 | 541 | ol.lowerroman { list-style-type: lower-roman; } 542 | 543 | ol.upperroman { list-style-type: upper-roman; } 544 | 545 | ol.lowergreek { list-style-type: lower-greek; } 546 | 547 | .hdlist > table, .colist > table { border: 0; background: none; } 548 | .hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } 549 | 550 | td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; } 551 | 552 | td.hdlist1 { font-weight: bold; padding-bottom: 0.75em; } 553 | 554 | .literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } 555 | 556 | .colist > table tr > td:first-of-type { padding: 0 0.75em; line-height: 1; } 557 | .colist > table tr > td:last-of-type { padding: 0.25em 0; } 558 | 559 | .thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } 560 | 561 | .imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } 562 | .imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } 563 | .imageblock > .title { margin-bottom: 0; } 564 | .imageblock.thumb, .imageblock.th { border-width: 6px; } 565 | .imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } 566 | 567 | .image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } 568 | .image.left { margin-right: 0.625em; } 569 | .image.right { margin-left: 0.625em; } 570 | 571 | a.image { text-decoration: none; display: inline-block; } 572 | a.image object { pointer-events: none; } 573 | 574 | sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; } 575 | sup.footnote a, sup.footnoteref a { text-decoration: none; } 576 | sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; } 577 | 578 | #footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } 579 | #footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; } 580 | #footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; } 581 | #footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; } 582 | #footnotes .footnote:last-of-type { margin-bottom: 0; } 583 | #content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } 584 | 585 | .gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; } 586 | .gist .file-data > table td.line-data { width: 99%; } 587 | 588 | div.unbreakable { page-break-inside: avoid; } 589 | 590 | .big { font-size: larger; } 591 | 592 | .small { font-size: smaller; } 593 | 594 | .underline { text-decoration: underline; } 595 | 596 | .overline { text-decoration: overline; } 597 | 598 | .line-through { text-decoration: line-through; } 599 | 600 | .aqua { color: #00bfbf; } 601 | 602 | .aqua-background { background-color: #00fafa; } 603 | 604 | .black { color: black; } 605 | 606 | .black-background { background-color: black; } 607 | 608 | .blue { color: #0000bf; } 609 | 610 | .blue-background { background-color: #0000fa; } 611 | 612 | .fuchsia { color: #bf00bf; } 613 | 614 | .fuchsia-background { background-color: #fa00fa; } 615 | 616 | .gray { color: #606060; } 617 | 618 | .gray-background { background-color: #7d7d7d; } 619 | 620 | .green { color: #006000; } 621 | 622 | .green-background { background-color: #007d00; } 623 | 624 | .lime { color: #00bf00; } 625 | 626 | .lime-background { background-color: #00fa00; } 627 | 628 | .maroon { color: #600000; } 629 | 630 | .maroon-background { background-color: #7d0000; } 631 | 632 | .navy { color: #000060; } 633 | 634 | .navy-background { background-color: #00007d; } 635 | 636 | .olive { color: #606000; } 637 | 638 | .olive-background { background-color: #7d7d00; } 639 | 640 | .purple { color: #600060; } 641 | 642 | .purple-background { background-color: #7d007d; } 643 | 644 | .red { color: #bf0000; } 645 | 646 | .red-background { background-color: #fa0000; } 647 | 648 | .silver { color: #909090; } 649 | 650 | .silver-background { background-color: #bcbcbc; } 651 | 652 | .teal { color: #006060; } 653 | 654 | .teal-background { background-color: #007d7d; } 655 | 656 | .white { color: #bfbfbf; } 657 | 658 | .white-background { background-color: #fafafa; } 659 | 660 | .yellow { color: #bfbf00; } 661 | 662 | .yellow-background { background-color: #fafa00; } 663 | 664 | span.icon > .fa { cursor: default; } 665 | 666 | .admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } 667 | .admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #004176; } 668 | .admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } 669 | .admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } 670 | .admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } 671 | .admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } 672 | 673 | .conum[data-value] { display: inline-block; color: #fff !important; background-color: black; -webkit-border-radius: 100px; border-radius: 100px; 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; } 674 | .conum[data-value] * { color: #fff !important; } 675 | .conum[data-value] + b { display: none; } 676 | .conum[data-value]:after { content: attr(data-value); } 677 | pre .conum[data-value] { position: relative; top: -0.125em; } 678 | 679 | b.conum * { color: inherit !important; } 680 | 681 | .conum:not([data-value]):empty { display: none; } 682 | 683 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { border-bottom: 1px solid #dddddd; } 684 | 685 | .sect1 { padding-bottom: 0; } 686 | 687 | #toctitle { color: #00406F; font-weight: normal; margin-top: 1.5em; } 688 | 689 | .sidebarblock { border-color: #aaa; } 690 | 691 | code { -webkit-border-radius: 4px; border-radius: 4px; } 692 | 693 | p.tableblock.header { color: #6d6e71; } 694 | 695 | .literalblock pre, .listingblock pre { background: #eeeeee; } 696 | -------------------------------------------------------------------------------- /stylesheets/foundation-potion.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ 2 | /* ========================================================================== HTML5 display definitions ========================================================================== */ 3 | /** Correct `block` display not defined in IE 8/9. */ 4 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } 5 | 6 | /** Correct `inline-block` display not defined in IE 8/9. */ 7 | audio, canvas, video { display: inline-block; } 8 | 9 | /** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ 10 | audio:not([controls]) { display: none; height: 0; } 11 | 12 | /** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ 13 | [hidden], template { display: none; } 14 | 15 | script { display: none !important; } 16 | 17 | /* ========================================================================== Base ========================================================================== */ 18 | /** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ 19 | html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } 20 | 21 | /** Remove default margin. */ 22 | body { margin: 0; } 23 | 24 | /* ========================================================================== Links ========================================================================== */ 25 | /** Remove the gray background color from active links in IE 10. */ 26 | a { background: transparent; } 27 | 28 | /** Address `outline` inconsistency between Chrome and other browsers. */ 29 | a:focus { outline: thin dotted; } 30 | 31 | /** Improve readability when focused and also mouse hovered in all browsers. */ 32 | a:active, a:hover { outline: 0; } 33 | 34 | /* ========================================================================== Typography ========================================================================== */ 35 | /** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ 36 | h1 { font-size: 2em; margin: 0.67em 0; } 37 | 38 | /** Address styling not present in IE 8/9, Safari 5, and Chrome. */ 39 | abbr[title] { border-bottom: 1px dotted; } 40 | 41 | /** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ 42 | b, strong { font-weight: bold; } 43 | 44 | /** Address styling not present in Safari 5 and Chrome. */ 45 | dfn { font-style: italic; } 46 | 47 | /** Address differences between Firefox and other browsers. */ 48 | hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } 49 | 50 | /** Address styling not present in IE 8/9. */ 51 | mark { background: #ff0; color: #000; } 52 | 53 | /** Correct font family set oddly in Safari 5 and Chrome. */ 54 | code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } 55 | 56 | /** Improve readability of pre-formatted text in all browsers. */ 57 | pre { white-space: pre-wrap; } 58 | 59 | /** Set consistent quote types. */ 60 | q { quotes: "\201C" "\201D" "\2018" "\2019"; } 61 | 62 | /** Address inconsistent and variable font size in all browsers. */ 63 | small { font-size: 80%; } 64 | 65 | /** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ 66 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 67 | 68 | sup { top: -0.5em; } 69 | 70 | sub { bottom: -0.25em; } 71 | 72 | /* ========================================================================== Embedded content ========================================================================== */ 73 | /** Remove border when inside `a` element in IE 8/9. */ 74 | img { border: 0; } 75 | 76 | /** Correct overflow displayed oddly in IE 9. */ 77 | svg:not(:root) { overflow: hidden; } 78 | 79 | /* ========================================================================== Figures ========================================================================== */ 80 | /** Address margin not present in IE 8/9 and Safari 5. */ 81 | figure { margin: 0; } 82 | 83 | /* ========================================================================== Forms ========================================================================== */ 84 | /** Define consistent border, margin, and padding. */ 85 | fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } 86 | 87 | /** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ 88 | legend { border: 0; /* 1 */ padding: 0; /* 2 */ } 89 | 90 | /** 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. */ 91 | button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } 92 | 93 | /** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ 94 | button, input { line-height: normal; } 95 | 96 | /** 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. */ 97 | button, select { text-transform: none; } 98 | 99 | /** 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. */ 100 | button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } 101 | 102 | /** Re-set default cursor for disabled elements. */ 103 | button[disabled], html input[disabled] { cursor: default; } 104 | 105 | /** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ 106 | input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } 107 | 108 | /** 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). */ 109 | input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } 110 | 111 | /** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ 112 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 113 | 114 | /** Remove inner padding and border in Firefox 4+. */ 115 | button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } 116 | 117 | /** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ 118 | textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } 119 | 120 | /* ========================================================================== Tables ========================================================================== */ 121 | /** Remove most spacing between table cells. */ 122 | table { border-collapse: collapse; border-spacing: 0; } 123 | 124 | meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; } 125 | 126 | meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; } 127 | 128 | meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; } 129 | 130 | *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 131 | 132 | html, body { font-size: 100%; } 133 | 134 | body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } 135 | 136 | a:hover { cursor: pointer; } 137 | 138 | img, object, embed { max-width: 100%; height: auto; } 139 | 140 | object, embed { height: 100%; } 141 | 142 | img { -ms-interpolation-mode: bicubic; } 143 | 144 | #map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } 145 | 146 | .left { float: left !important; } 147 | 148 | .right { float: right !important; } 149 | 150 | .text-left { text-align: left !important; } 151 | 152 | .text-right { text-align: right !important; } 153 | 154 | .text-center { text-align: center !important; } 155 | 156 | .text-justify { text-align: justify !important; } 157 | 158 | .hide { display: none; } 159 | 160 | .antialiased, body { -webkit-font-smoothing: antialiased; } 161 | 162 | img { display: inline-block; vertical-align: middle; } 163 | 164 | textarea { height: auto; min-height: 50px; } 165 | 166 | select { width: 100%; } 167 | 168 | object, svg { display: inline-block; vertical-align: middle; } 169 | 170 | .center { margin-left: auto; margin-right: auto; } 171 | 172 | .spread { width: 100%; } 173 | 174 | p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } 175 | 176 | .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.4; color: #980050; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } 177 | 178 | /* Typography resets */ 179 | 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; direction: ltr; } 180 | 181 | /* Default Link Styles */ 182 | a { color: #b1005d; text-decoration: none; line-height: inherit; } 183 | a:hover, a:focus { color: #640035; } 184 | a img { border: none; } 185 | 186 | /* Default paragraph styles */ 187 | p { font-family: inherit; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; text-rendering: optimizeLegibility; } 188 | p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } 189 | 190 | /* Default header styles */ 191 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; color: #333333; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2125em; } 192 | h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: gray; line-height: 0; } 193 | 194 | h1 { font-size: 2.125em; } 195 | 196 | h2 { font-size: 1.6875em; } 197 | 198 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } 199 | 200 | h4 { font-size: 1.125em; } 201 | 202 | h5 { font-size: 1.125em; } 203 | 204 | h6 { font-size: 1em; } 205 | 206 | hr { border: dotted #cccccc; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } 207 | 208 | /* Helpful Typography Defaults */ 209 | em, i { font-style: italic; line-height: inherit; } 210 | 211 | strong, b { font-weight: bold; line-height: inherit; } 212 | 213 | small { font-size: 60%; line-height: inherit; } 214 | 215 | code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: bold; color: #320348; } 216 | 217 | /* Lists */ 218 | ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; } 219 | 220 | ul, ol { margin-left: 1.5em; } 221 | ul.no-bullet, ol.no-bullet { margin-left: 1.5em; } 222 | 223 | /* Unordered Lists */ 224 | ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } 225 | ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } 226 | ul.square { list-style-type: square; } 227 | ul.circle { list-style-type: circle; } 228 | ul.disc { list-style-type: disc; } 229 | ul.no-bullet { list-style: none; } 230 | 231 | /* Ordered Lists */ 232 | ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } 233 | 234 | /* Definition Lists */ 235 | dl dt { margin-bottom: 0.3125em; font-weight: bold; } 236 | dl dd { margin-bottom: 1.25em; } 237 | 238 | /* Abbreviations */ 239 | abbr, acronym { text-transform: uppercase; font-size: 90%; color: #555555; border-bottom: 1px dotted #dddddd; cursor: help; } 240 | 241 | abbr { text-transform: none; } 242 | 243 | /* Blockquotes */ 244 | blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #efefef; } 245 | blockquote cite { display: block; font-size: 0.8125em; color: #5e5e5e; } 246 | blockquote cite:before { content: "\2014 \0020"; } 247 | blockquote cite a, blockquote cite a:visited { color: #5e5e5e; } 248 | 249 | blockquote, blockquote p { line-height: 1.6; color: #777777; } 250 | 251 | /* Microformats */ 252 | .vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } 253 | .vcard li { margin: 0; display: block; } 254 | .vcard .fn { font-weight: bold; font-size: 0.9375em; } 255 | 256 | .vevent .summary { font-weight: bold; } 257 | .vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } 258 | 259 | @media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 260 | h1 { font-size: 2.75em; } 261 | h2 { font-size: 2.3125em; } 262 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } 263 | h4 { font-size: 1.4375em; } } 264 | /* Tables */ 265 | table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } 266 | table thead, table tfoot { background: whitesmoke; font-weight: normal; } 267 | 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: #333333; text-align: left; } 268 | table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #555555; } 269 | table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; } 270 | table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; } 271 | 272 | body { tab-size: 4; } 273 | 274 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 275 | 276 | .clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } 277 | .clearfix:after, .float-group:after { clear: both; } 278 | 279 | *:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 0; line-height: inherit; } 280 | 281 | pre, pre > code { line-height: 1.4; color: black; font-family: monospace, serif; font-weight: normal; } 282 | 283 | em em { font-style: normal; } 284 | 285 | strong strong { font-weight: normal; } 286 | 287 | .keyseq { color: #888888; } 288 | 289 | kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: #555555; font-size: 0.65em; line-height: 1.45; background-color: #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 white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; } 290 | 291 | .keyseq kbd:first-child { margin-left: 0; } 292 | 293 | .keyseq kbd:last-child { margin-right: 0; } 294 | 295 | .menuseq, .menu { color: #3b3b3b; } 296 | 297 | b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; } 298 | 299 | b.button:before { content: "["; padding: 0 3px 0 2px; } 300 | 301 | b.button:after { content: "]"; padding: 0 2px 0 3px; } 302 | 303 | #header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; } 304 | #header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } 305 | #header:after, #content:after, #footnotes:after, #footer:after { clear: both; } 306 | 307 | #content { margin-top: 1.25em; } 308 | 309 | #content:before { content: none; } 310 | 311 | #header > h1:first-child { color: #b1005d; margin-top: 2.25rem; margin-bottom: 0; } 312 | #header > h1:first-child + #toc { margin-top: 8px; border-top: 1px dotted #cccccc; } 313 | #header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px dotted #cccccc; padding-bottom: 8px; } 314 | #header .details { border-bottom: 1px dotted #cccccc; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #5e5e5e; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; } 315 | #header .details span:first-child { margin-left: -0.125em; } 316 | #header .details span.email a { color: #777777; } 317 | #header .details br { display: none; } 318 | #header .details br + span:before { content: "\00a0\2013\00a0"; } 319 | #header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #777777; } 320 | #header .details br + span#revremark:before { content: "\00a0|\00a0"; } 321 | #header #revnumber { text-transform: capitalize; } 322 | #header #revnumber:after { content: "\00a0"; } 323 | 324 | #content > h1:first-child:not([class]) { color: #b1005d; border-bottom: 1px dotted #cccccc; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; } 325 | 326 | #toc { border-bottom: 1px solid #cccccc; padding-bottom: 0.5em; } 327 | #toc > ul { margin-left: 0.125em; } 328 | #toc ul.sectlevel0 > li > a { font-style: italic; } 329 | #toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; } 330 | #toc ul { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; list-style-type: none; } 331 | #toc li { line-height: 1.3334; margin-top: 0.3334em; } 332 | #toc a { text-decoration: none; } 333 | #toc a:active { text-decoration: underline; } 334 | 335 | #toctitle { color: #980050; font-size: 1.2em; } 336 | 337 | @media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; } 338 | body.toc2 { padding-left: 15em; padding-right: 0; } 339 | #toc.toc2 { margin-top: 0 !important; background-color: #f2f2f2; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #cccccc; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; } 340 | #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; } 341 | #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; } 342 | #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; } 343 | #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } 344 | body.toc2.toc-right { padding-left: 0; padding-right: 15em; } 345 | body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #cccccc; left: auto; right: 0; } } 346 | @media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; } 347 | #toc.toc2 { width: 20em; } 348 | #toc.toc2 #toctitle { font-size: 1.375em; } 349 | #toc.toc2 > ul { font-size: 0.95em; } 350 | #toc.toc2 ul ul { padding-left: 1.25em; } 351 | body.toc2.toc-right { padding-left: 0; padding-right: 20em; } } 352 | #content #toc { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 353 | #content #toc > :first-child { margin-top: 0; } 354 | #content #toc > :last-child { margin-bottom: 0; } 355 | 356 | #footer { max-width: 100%; background-color: #272727; padding: 1.25em; } 357 | 358 | #footer-text { color: #bcbcbc; line-height: 1.44; } 359 | 360 | .sect1 { padding-bottom: 0.625em; } 361 | 362 | @media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } } 363 | .sect1 + .sect1 { border-top: 1px solid #cccccc; } 364 | 365 | #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: normal; } 366 | #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; } 367 | #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; } 368 | #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: #333333; text-decoration: none; } 369 | #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: #262626; } 370 | 371 | .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; } 372 | 373 | .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; } 374 | 375 | table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; } 376 | 377 | .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: #b1005d; } 378 | 379 | table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } 380 | 381 | .admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; } 382 | .admonitionblock > table td.icon { text-align: center; width: 80px; } 383 | .admonitionblock > table td.icon img { max-width: none; } 384 | .admonitionblock > table td.icon .title { font-weight: bold; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; text-transform: uppercase; } 385 | .admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px dotted #cccccc; color: #5e5e5e; } 386 | .admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } 387 | 388 | .exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 389 | .exampleblock > .content > :first-child { margin-top: 0; } 390 | .exampleblock > .content > :last-child { margin-bottom: 0; } 391 | 392 | .sidebarblock { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 393 | .sidebarblock > :first-child { margin-top: 0; } 394 | .sidebarblock > :last-child { margin-bottom: 0; } 395 | .sidebarblock > .content > .title { color: #980050; margin-top: 0; } 396 | 397 | .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; } 398 | 399 | .literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #efefef; } 400 | .sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; } 401 | 402 | .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px solid #cccccc; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 0.75em 0.75em 0.625em 0.75em; font-size: 0.8125em; } 403 | .literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } 404 | @media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } } 405 | @media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } } 406 | 407 | .literalblock.output pre { color: #efefef; background-color: black; } 408 | 409 | .listingblock pre.highlightjs { padding: 0; } 410 | .listingblock pre.highlightjs > code { padding: 0.75em 0.75em 0.625em 0.75em; -webkit-border-radius: 0; border-radius: 0; } 411 | 412 | .listingblock > .content { position: relative; } 413 | 414 | .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: #999; } 415 | 416 | .listingblock:hover code[data-lang]:before { display: block; } 417 | 418 | .listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } 419 | 420 | .listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; } 421 | 422 | table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; } 423 | 424 | table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.4; } 425 | 426 | table.pyhltable td.code { padding-left: .75em; padding-right: 0; } 427 | 428 | pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #cccccc; } 429 | 430 | pre.pygments .lineno { display: inline-block; margin-right: .25em; } 431 | 432 | table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; } 433 | 434 | .quoteblock { margin: 0 1em 1.25em 1.5em; display: table; } 435 | .quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; } 436 | .quoteblock blockquote, .quoteblock blockquote p { color: #777777; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; } 437 | .quoteblock blockquote { margin: 0; padding: 0; border: 0; } 438 | .quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #980050; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } 439 | .quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } 440 | .quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; } 441 | .quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #5e5e5e; } 442 | .quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; } 443 | .quoteblock .quoteblock blockquote:before { display: none; } 444 | 445 | .verseblock { margin: 0 1em 1.25em 1em; } 446 | .verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #777777; font-weight: 300; text-rendering: optimizeLegibility; } 447 | .verseblock pre strong { font-weight: 400; } 448 | .verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; } 449 | 450 | .quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; } 451 | .quoteblock .attribution br, .verseblock .attribution br { display: none; } 452 | .quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #5e5e5e; } 453 | 454 | .quoteblock.abstract { margin: 0 0 1.25em 0; display: block; } 455 | .quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; } 456 | .quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; } 457 | 458 | table.tableblock { max-width: 100%; border-collapse: separate; } 459 | table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; } 460 | 461 | table.tableblock, th.tableblock, td.tableblock { border: 0 solid #dddddd; } 462 | 463 | table.grid-all th.tableblock, table.grid-all td.tableblock { border-width: 0 1px 1px 0; } 464 | 465 | table.grid-all tfoot > tr > th.tableblock, table.grid-all tfoot > tr > td.tableblock { border-width: 1px 1px 0 0; } 466 | 467 | table.grid-cols th.tableblock, table.grid-cols td.tableblock { border-width: 0 1px 0 0; } 468 | 469 | table.grid-all * > tr > .tableblock:last-child, table.grid-cols * > tr > .tableblock:last-child { border-right-width: 0; } 470 | 471 | table.grid-rows th.tableblock, table.grid-rows td.tableblock { border-width: 0 0 1px 0; } 472 | 473 | table.grid-all tbody > tr:last-child > th.tableblock, table.grid-all tbody > tr:last-child > td.tableblock, table.grid-all thead:last-child > tr > th.tableblock, table.grid-rows tbody > tr:last-child > th.tableblock, table.grid-rows tbody > tr:last-child > td.tableblock, table.grid-rows thead:last-child > tr > th.tableblock { border-bottom-width: 0; } 474 | 475 | table.grid-rows tfoot > tr > th.tableblock, table.grid-rows tfoot > tr > td.tableblock { border-width: 1px 0 0 0; } 476 | 477 | table.frame-all { border-width: 1px; } 478 | 479 | table.frame-sides { border-width: 0 1px; } 480 | 481 | table.frame-topbot { border-width: 1px 0; } 482 | 483 | th.halign-left, td.halign-left { text-align: left; } 484 | 485 | th.halign-right, td.halign-right { text-align: right; } 486 | 487 | th.halign-center, td.halign-center { text-align: center; } 488 | 489 | th.valign-top, td.valign-top { vertical-align: top; } 490 | 491 | th.valign-bottom, td.valign-bottom { vertical-align: bottom; } 492 | 493 | th.valign-middle, td.valign-middle { vertical-align: middle; } 494 | 495 | table thead th, table tfoot th { font-weight: normal; } 496 | 497 | tbody tr th { display: table-cell; line-height: 1.4; background: whitesmoke; } 498 | 499 | tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #333333; font-weight: normal; } 500 | 501 | p.tableblock > code:only-child { background: none; padding: 0; } 502 | 503 | p.tableblock { font-size: 1em; } 504 | 505 | td > div.verse { white-space: pre; } 506 | 507 | ol { margin-left: 1.75em; } 508 | 509 | ul li ol { margin-left: 1.5em; } 510 | 511 | dl dd { margin-left: 1.125em; } 512 | 513 | dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } 514 | 515 | ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; } 516 | 517 | ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; } 518 | 519 | ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; } 520 | 521 | ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1em; font-size: 0.85em; } 522 | 523 | ul.checklist li > p:first-child > input[type="checkbox"]:first-child { width: 1em; position: relative; top: 1px; } 524 | 525 | ul.inline { margin: 0 auto 0.625em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; } 526 | ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; } 527 | ul.inline > li > * { display: block; } 528 | 529 | .unstyled dl dt { font-weight: normal; font-style: normal; } 530 | 531 | ol.arabic { list-style-type: decimal; } 532 | 533 | ol.decimal { list-style-type: decimal-leading-zero; } 534 | 535 | ol.loweralpha { list-style-type: lower-alpha; } 536 | 537 | ol.upperalpha { list-style-type: upper-alpha; } 538 | 539 | ol.lowerroman { list-style-type: lower-roman; } 540 | 541 | ol.upperroman { list-style-type: upper-roman; } 542 | 543 | ol.lowergreek { list-style-type: lower-greek; } 544 | 545 | .hdlist > table, .colist > table { border: 0; background: none; } 546 | .hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } 547 | 548 | td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; } 549 | 550 | td.hdlist1 { font-weight: bold; padding-bottom: 1.25em; } 551 | 552 | .literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } 553 | 554 | .colist > table tr > td:first-of-type { padding: 0 0.75em; line-height: 1; } 555 | .colist > table tr > td:last-of-type { padding: 0.25em 0; } 556 | 557 | .thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } 558 | 559 | .imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } 560 | .imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } 561 | .imageblock > .title { margin-bottom: 0; } 562 | .imageblock.thumb, .imageblock.th { border-width: 6px; } 563 | .imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } 564 | 565 | .image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } 566 | .image.left { margin-right: 0.625em; } 567 | .image.right { margin-left: 0.625em; } 568 | 569 | a.image { text-decoration: none; display: inline-block; } 570 | a.image object { pointer-events: none; } 571 | 572 | sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; } 573 | sup.footnote a, sup.footnoteref a { text-decoration: none; } 574 | sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; } 575 | 576 | #footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } 577 | #footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; } 578 | #footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; } 579 | #footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; } 580 | #footnotes .footnote:last-of-type { margin-bottom: 0; } 581 | #content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } 582 | 583 | .gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; } 584 | .gist .file-data > table td.line-data { width: 99%; } 585 | 586 | div.unbreakable { page-break-inside: avoid; } 587 | 588 | .big { font-size: larger; } 589 | 590 | .small { font-size: smaller; } 591 | 592 | .underline { text-decoration: underline; } 593 | 594 | .overline { text-decoration: overline; } 595 | 596 | .line-through { text-decoration: line-through; } 597 | 598 | .aqua { color: #00bfbf; } 599 | 600 | .aqua-background { background-color: #00fafa; } 601 | 602 | .black { color: black; } 603 | 604 | .black-background { background-color: black; } 605 | 606 | .blue { color: #0000bf; } 607 | 608 | .blue-background { background-color: #0000fa; } 609 | 610 | .fuchsia { color: #bf00bf; } 611 | 612 | .fuchsia-background { background-color: #fa00fa; } 613 | 614 | .gray { color: #606060; } 615 | 616 | .gray-background { background-color: #7d7d7d; } 617 | 618 | .green { color: #006000; } 619 | 620 | .green-background { background-color: #007d00; } 621 | 622 | .lime { color: #00bf00; } 623 | 624 | .lime-background { background-color: #00fa00; } 625 | 626 | .maroon { color: #600000; } 627 | 628 | .maroon-background { background-color: #7d0000; } 629 | 630 | .navy { color: #000060; } 631 | 632 | .navy-background { background-color: #00007d; } 633 | 634 | .olive { color: #606000; } 635 | 636 | .olive-background { background-color: #7d7d00; } 637 | 638 | .purple { color: #600060; } 639 | 640 | .purple-background { background-color: #7d007d; } 641 | 642 | .red { color: #bf0000; } 643 | 644 | .red-background { background-color: #fa0000; } 645 | 646 | .silver { color: #909090; } 647 | 648 | .silver-background { background-color: #bcbcbc; } 649 | 650 | .teal { color: #006060; } 651 | 652 | .teal-background { background-color: #007d7d; } 653 | 654 | .white { color: #bfbfbf; } 655 | 656 | .white-background { background-color: #fafafa; } 657 | 658 | .yellow { color: #bfbf00; } 659 | 660 | .yellow-background { background-color: #fafa00; } 661 | 662 | span.icon > .fa { cursor: default; } 663 | 664 | .admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } 665 | .admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #850046; } 666 | .admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } 667 | .admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } 668 | .admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } 669 | .admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } 670 | 671 | .conum[data-value] { display: inline-block; color: #fff !important; background-color: #555555; -webkit-border-radius: 100px; border-radius: 100px; 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; } 672 | .conum[data-value] * { color: #fff !important; } 673 | .conum[data-value] + b { display: none; } 674 | .conum[data-value]:after { content: attr(data-value); } 675 | pre .conum[data-value] { position: relative; top: -0.125em; } 676 | 677 | b.conum * { color: inherit !important; } 678 | 679 | .conum:not([data-value]):empty { display: none; } 680 | 681 | #header > h1 { border-bottom-style: solid; } 682 | 683 | #toctitle { color: #333333; } 684 | 685 | .listingblock pre, .literalblock pre { background: -moz-linear-gradient(top, white 0%, #f4f4f4 100%); background: -webkit-linear-gradient(top, white 0%, #f4f4f4 100%); background: linear-gradient(to bottom, #ffffff 0%, #f4f4f4 100%); -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); } 686 | 687 | .sidebarblock { background: none; border: none; -webkit-box-shadow: 0 0 5px rgba(177, 0, 93, 0.5); box-shadow: 0 0 5px rgba(177, 0, 93, 0.5); } 688 | .sidebarblock > .content > .title { color: #181818; } 689 | -------------------------------------------------------------------------------- /stylesheets/foundation-lime.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ 2 | /* ========================================================================== HTML5 display definitions ========================================================================== */ 3 | /** Correct `block` display not defined in IE 8/9. */ 4 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } 5 | 6 | /** Correct `inline-block` display not defined in IE 8/9. */ 7 | audio, canvas, video { display: inline-block; } 8 | 9 | /** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ 10 | audio:not([controls]) { display: none; height: 0; } 11 | 12 | /** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ 13 | [hidden], template { display: none; } 14 | 15 | script { display: none !important; } 16 | 17 | /* ========================================================================== Base ========================================================================== */ 18 | /** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ 19 | html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } 20 | 21 | /** Remove default margin. */ 22 | body { margin: 0; } 23 | 24 | /* ========================================================================== Links ========================================================================== */ 25 | /** Remove the gray background color from active links in IE 10. */ 26 | a { background: transparent; } 27 | 28 | /** Address `outline` inconsistency between Chrome and other browsers. */ 29 | a:focus { outline: thin dotted; } 30 | 31 | /** Improve readability when focused and also mouse hovered in all browsers. */ 32 | a:active, a:hover { outline: 0; } 33 | 34 | /* ========================================================================== Typography ========================================================================== */ 35 | /** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ 36 | h1 { font-size: 2em; margin: 0.67em 0; } 37 | 38 | /** Address styling not present in IE 8/9, Safari 5, and Chrome. */ 39 | abbr[title] { border-bottom: 1px dotted; } 40 | 41 | /** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ 42 | b, strong { font-weight: bold; } 43 | 44 | /** Address styling not present in Safari 5 and Chrome. */ 45 | dfn { font-style: italic; } 46 | 47 | /** Address differences between Firefox and other browsers. */ 48 | hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } 49 | 50 | /** Address styling not present in IE 8/9. */ 51 | mark { background: #ff0; color: #000; } 52 | 53 | /** Correct font family set oddly in Safari 5 and Chrome. */ 54 | code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } 55 | 56 | /** Improve readability of pre-formatted text in all browsers. */ 57 | pre { white-space: pre-wrap; } 58 | 59 | /** Set consistent quote types. */ 60 | q { quotes: "\201C" "\201D" "\2018" "\2019"; } 61 | 62 | /** Address inconsistent and variable font size in all browsers. */ 63 | small { font-size: 80%; } 64 | 65 | /** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ 66 | sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } 67 | 68 | sup { top: -0.5em; } 69 | 70 | sub { bottom: -0.25em; } 71 | 72 | /* ========================================================================== Embedded content ========================================================================== */ 73 | /** Remove border when inside `a` element in IE 8/9. */ 74 | img { border: 0; } 75 | 76 | /** Correct overflow displayed oddly in IE 9. */ 77 | svg:not(:root) { overflow: hidden; } 78 | 79 | /* ========================================================================== Figures ========================================================================== */ 80 | /** Address margin not present in IE 8/9 and Safari 5. */ 81 | figure { margin: 0; } 82 | 83 | /* ========================================================================== Forms ========================================================================== */ 84 | /** Define consistent border, margin, and padding. */ 85 | fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } 86 | 87 | /** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ 88 | legend { border: 0; /* 1 */ padding: 0; /* 2 */ } 89 | 90 | /** 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. */ 91 | button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ } 92 | 93 | /** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ 94 | button, input { line-height: normal; } 95 | 96 | /** 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. */ 97 | button, select { text-transform: none; } 98 | 99 | /** 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. */ 100 | button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } 101 | 102 | /** Re-set default cursor for disabled elements. */ 103 | button[disabled], html input[disabled] { cursor: default; } 104 | 105 | /** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ 106 | input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } 107 | 108 | /** 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). */ 109 | input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } 110 | 111 | /** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ 112 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } 113 | 114 | /** Remove inner padding and border in Firefox 4+. */ 115 | button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } 116 | 117 | /** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ 118 | textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } 119 | 120 | /* ========================================================================== Tables ========================================================================== */ 121 | /** Remove most spacing between table cells. */ 122 | table { border-collapse: collapse; border-spacing: 0; } 123 | 124 | meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; } 125 | 126 | meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; } 127 | 128 | meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; } 129 | 130 | *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } 131 | 132 | html, body { font-size: 100%; } 133 | 134 | body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; } 135 | 136 | a:hover { cursor: pointer; } 137 | 138 | img, object, embed { max-width: 100%; height: auto; } 139 | 140 | object, embed { height: 100%; } 141 | 142 | img { -ms-interpolation-mode: bicubic; } 143 | 144 | #map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; } 145 | 146 | .left { float: left !important; } 147 | 148 | .right { float: right !important; } 149 | 150 | .text-left { text-align: left !important; } 151 | 152 | .text-right { text-align: right !important; } 153 | 154 | .text-center { text-align: center !important; } 155 | 156 | .text-justify { text-align: justify !important; } 157 | 158 | .hide { display: none; } 159 | 160 | .antialiased, body { -webkit-font-smoothing: antialiased; } 161 | 162 | img { display: inline-block; vertical-align: middle; } 163 | 164 | textarea { height: auto; min-height: 50px; } 165 | 166 | select { width: 100%; } 167 | 168 | object, svg { display: inline-block; vertical-align: middle; } 169 | 170 | .center { margin-left: auto; margin-right: auto; } 171 | 172 | .spread { width: 100%; } 173 | 174 | p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; } 175 | 176 | .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.4; color: #777777; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } 177 | 178 | /* Typography resets */ 179 | 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; direction: ltr; } 180 | 181 | /* Default Link Styles */ 182 | a { color: #9cb115; text-decoration: none; line-height: inherit; } 183 | a:hover, a:focus { color: #b7d30b; } 184 | a img { border: none; } 185 | 186 | /* Default paragraph styles */ 187 | p { font-family: inherit; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; text-rendering: optimizeLegibility; } 188 | p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; } 189 | 190 | /* Default header styles */ 191 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; color: #333333; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2125em; } 192 | h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: gray; line-height: 0; } 193 | 194 | h1 { font-size: 2.125em; } 195 | 196 | h2 { font-size: 1.6875em; } 197 | 198 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; } 199 | 200 | h4 { font-size: 1.125em; } 201 | 202 | h5 { font-size: 1.125em; } 203 | 204 | h6 { font-size: 1em; } 205 | 206 | hr { border: dotted #cccccc; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; } 207 | 208 | /* Helpful Typography Defaults */ 209 | em, i { font-style: italic; line-height: inherit; } 210 | 211 | strong, b { font-weight: bold; line-height: inherit; } 212 | 213 | small { font-size: 60%; line-height: inherit; } 214 | 215 | code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: bold; color: #417b06; } 216 | 217 | /* Lists */ 218 | ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; } 219 | 220 | ul, ol { margin-left: 1.5em; } 221 | ul.no-bullet, ol.no-bullet { margin-left: 1.5em; } 222 | 223 | /* Unordered Lists */ 224 | ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ } 225 | ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; } 226 | ul.square { list-style-type: square; } 227 | ul.circle { list-style-type: circle; } 228 | ul.disc { list-style-type: disc; } 229 | ul.no-bullet { list-style: none; } 230 | 231 | /* Ordered Lists */ 232 | ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; } 233 | 234 | /* Definition Lists */ 235 | dl dt { margin-bottom: 0.3125em; font-weight: bold; } 236 | dl dd { margin-bottom: 1.25em; } 237 | 238 | /* Abbreviations */ 239 | abbr, acronym { text-transform: uppercase; font-size: 90%; color: #555555; border-bottom: 1px dotted #dddddd; cursor: help; } 240 | 241 | abbr { text-transform: none; } 242 | 243 | /* Blockquotes */ 244 | blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #efefef; } 245 | blockquote cite { display: block; font-size: 0.8125em; color: #5e5e5e; } 246 | blockquote cite:before { content: "\2014 \0020"; } 247 | blockquote cite a, blockquote cite a:visited { color: #5e5e5e; } 248 | 249 | blockquote, blockquote p { line-height: 1.6; color: #777777; } 250 | 251 | /* Microformats */ 252 | .vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; } 253 | .vcard li { margin: 0; display: block; } 254 | .vcard .fn { font-weight: bold; font-size: 0.9375em; } 255 | 256 | .vevent .summary { font-weight: bold; } 257 | .vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; } 258 | 259 | @media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 260 | h1 { font-size: 2.75em; } 261 | h2 { font-size: 2.3125em; } 262 | h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; } 263 | h4 { font-size: 1.4375em; } } 264 | /* Tables */ 265 | table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } 266 | table thead, table tfoot { background: whitesmoke; font-weight: normal; } 267 | 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: #333333; text-align: left; } 268 | table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #555555; } 269 | table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; } 270 | table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; } 271 | 272 | body { tab-size: 4; } 273 | 274 | h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; } 275 | 276 | .clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; } 277 | .clearfix:after, .float-group:after { clear: both; } 278 | 279 | *:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 0; line-height: inherit; } 280 | 281 | pre, pre > code { line-height: 1.4; color: black; font-family: monospace, serif; font-weight: normal; } 282 | 283 | em em { font-style: normal; } 284 | 285 | strong strong { font-weight: normal; } 286 | 287 | .keyseq { color: #888888; } 288 | 289 | kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: #555555; font-size: 0.65em; line-height: 1.45; background-color: #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 white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; } 290 | 291 | .keyseq kbd:first-child { margin-left: 0; } 292 | 293 | .keyseq kbd:last-child { margin-right: 0; } 294 | 295 | .menuseq, .menu { color: #3b3b3b; } 296 | 297 | b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; } 298 | 299 | b.button:before { content: "["; padding: 0 3px 0 2px; } 300 | 301 | b.button:after { content: "]"; padding: 0 2px 0 3px; } 302 | 303 | #header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; } 304 | #header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; } 305 | #header:after, #content:after, #footnotes:after, #footer:after { clear: both; } 306 | 307 | #content { margin-top: 1.25em; } 308 | 309 | #content:before { content: none; } 310 | 311 | #header > h1:first-child { color: #b7d30b; font-weight: bold; margin-top: 2.25rem; margin-bottom: 0; } 312 | #header > h1:first-child + #toc { margin-top: 8px; border-top: 1px dotted #cccccc; } 313 | #header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px dotted #cccccc; padding-bottom: 8px; } 314 | #header .details { border-bottom: 1px dotted #cccccc; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #5e5e5e; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; } 315 | #header .details span:first-child { margin-left: -0.125em; } 316 | #header .details span.email a { color: #777777; } 317 | #header .details br { display: none; } 318 | #header .details br + span:before { content: "\00a0\2013\00a0"; } 319 | #header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #777777; } 320 | #header .details br + span#revremark:before { content: "\00a0|\00a0"; } 321 | #header #revnumber { text-transform: capitalize; } 322 | #header #revnumber:after { content: "\00a0"; } 323 | 324 | #content > h1:first-child:not([class]) { color: #b7d30b; font-weight: bold; border-bottom: 1px dotted #cccccc; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; } 325 | 326 | #toc { border-bottom: 1px solid #cccccc; padding-bottom: 0.5em; } 327 | #toc > ul { margin-left: 0.125em; } 328 | #toc ul.sectlevel0 > li > a { font-style: italic; } 329 | #toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; } 330 | #toc ul { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; list-style-type: none; } 331 | #toc li { line-height: 1.3334; margin-top: 0.3334em; } 332 | #toc a { text-decoration: none; } 333 | #toc a:active { text-decoration: underline; } 334 | 335 | #toctitle { color: #777777; font-size: 1.2em; } 336 | 337 | @media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; } 338 | body.toc2 { padding-left: 15em; padding-right: 0; } 339 | #toc.toc2 { margin-top: 0 !important; background-color: #f2f2f2; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #cccccc; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; } 340 | #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; } 341 | #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; } 342 | #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; } 343 | #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; } 344 | body.toc2.toc-right { padding-left: 0; padding-right: 15em; } 345 | body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #cccccc; left: auto; right: 0; } } 346 | @media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; } 347 | #toc.toc2 { width: 20em; } 348 | #toc.toc2 #toctitle { font-size: 1.375em; } 349 | #toc.toc2 > ul { font-size: 0.95em; } 350 | #toc.toc2 ul ul { padding-left: 1.25em; } 351 | body.toc2.toc-right { padding-left: 0; padding-right: 20em; } } 352 | #content #toc { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 353 | #content #toc > :first-child { margin-top: 0; } 354 | #content #toc > :last-child { margin-bottom: 0; } 355 | 356 | #footer { max-width: 100%; background-color: #272727; padding: 1.25em; } 357 | 358 | #footer-text { color: #bcbcbc; line-height: 1.44; } 359 | 360 | .sect1 { padding-bottom: 0.625em; } 361 | 362 | @media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } } 363 | .sect1 + .sect1 { border-top: 1px solid #cccccc; } 364 | 365 | #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: normal; } 366 | #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; } 367 | #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; } 368 | #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: #333333; text-decoration: none; } 369 | #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: #262626; } 370 | 371 | .audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; } 372 | 373 | .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; } 374 | 375 | table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; } 376 | 377 | .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: #b7d30b; } 378 | 379 | table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } 380 | 381 | .admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; } 382 | .admonitionblock > table td.icon { text-align: center; width: 80px; } 383 | .admonitionblock > table td.icon img { max-width: none; } 384 | .admonitionblock > table td.icon .title { font-weight: bold; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; text-transform: uppercase; } 385 | .admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px dotted #cccccc; color: #5e5e5e; } 386 | .admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } 387 | 388 | .exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; } 389 | .exampleblock > .content > :first-child { margin-top: 0; } 390 | .exampleblock > .content > :last-child { margin-bottom: 0; } 391 | 392 | .sidebarblock { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 0; border-radius: 0; } 393 | .sidebarblock > :first-child { margin-top: 0; } 394 | .sidebarblock > :last-child { margin-bottom: 0; } 395 | .sidebarblock > .content > .title { color: #777777; margin-top: 0; } 396 | 397 | .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; } 398 | 399 | .literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #efefef; } 400 | .sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; } 401 | 402 | .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px solid #cccccc; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 0.75em 0.75em 0.625em 0.75em; font-size: 0.8125em; } 403 | .literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; } 404 | @media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } } 405 | @media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } } 406 | 407 | .literalblock.output pre { color: #efefef; background-color: black; } 408 | 409 | .listingblock pre.highlightjs { padding: 0; } 410 | .listingblock pre.highlightjs > code { padding: 0.75em 0.75em 0.625em 0.75em; -webkit-border-radius: 0; border-radius: 0; } 411 | 412 | .listingblock > .content { position: relative; } 413 | 414 | .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: #999; } 415 | 416 | .listingblock:hover code[data-lang]:before { display: block; } 417 | 418 | .listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; } 419 | 420 | .listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; } 421 | 422 | table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; } 423 | 424 | table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.4; } 425 | 426 | table.pyhltable td.code { padding-left: .75em; padding-right: 0; } 427 | 428 | pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #cccccc; } 429 | 430 | pre.pygments .lineno { display: inline-block; margin-right: .25em; } 431 | 432 | table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; } 433 | 434 | .quoteblock { margin: 0 1em 1.25em 1.5em; display: table; } 435 | .quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; } 436 | .quoteblock blockquote, .quoteblock blockquote p { color: #777777; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; } 437 | .quoteblock blockquote { margin: 0; padding: 0; border: 0; } 438 | .quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #777777; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } 439 | .quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; } 440 | .quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; } 441 | .quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #5e5e5e; } 442 | .quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; } 443 | .quoteblock .quoteblock blockquote:before { display: none; } 444 | 445 | .verseblock { margin: 0 1em 1.25em 1em; } 446 | .verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #777777; font-weight: 300; text-rendering: optimizeLegibility; } 447 | .verseblock pre strong { font-weight: 400; } 448 | .verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; } 449 | 450 | .quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; } 451 | .quoteblock .attribution br, .verseblock .attribution br { display: none; } 452 | .quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #5e5e5e; } 453 | 454 | .quoteblock.abstract { margin: 0 0 1.25em 0; display: block; } 455 | .quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; } 456 | .quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; } 457 | 458 | table.tableblock { max-width: 100%; border-collapse: separate; } 459 | table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; } 460 | 461 | table.tableblock, th.tableblock, td.tableblock { border: 0 solid #dddddd; } 462 | 463 | table.grid-all th.tableblock, table.grid-all td.tableblock { border-width: 0 1px 1px 0; } 464 | 465 | table.grid-all tfoot > tr > th.tableblock, table.grid-all tfoot > tr > td.tableblock { border-width: 1px 1px 0 0; } 466 | 467 | table.grid-cols th.tableblock, table.grid-cols td.tableblock { border-width: 0 1px 0 0; } 468 | 469 | table.grid-all * > tr > .tableblock:last-child, table.grid-cols * > tr > .tableblock:last-child { border-right-width: 0; } 470 | 471 | table.grid-rows th.tableblock, table.grid-rows td.tableblock { border-width: 0 0 1px 0; } 472 | 473 | table.grid-all tbody > tr:last-child > th.tableblock, table.grid-all tbody > tr:last-child > td.tableblock, table.grid-all thead:last-child > tr > th.tableblock, table.grid-rows tbody > tr:last-child > th.tableblock, table.grid-rows tbody > tr:last-child > td.tableblock, table.grid-rows thead:last-child > tr > th.tableblock { border-bottom-width: 0; } 474 | 475 | table.grid-rows tfoot > tr > th.tableblock, table.grid-rows tfoot > tr > td.tableblock { border-width: 1px 0 0 0; } 476 | 477 | table.frame-all { border-width: 1px; } 478 | 479 | table.frame-sides { border-width: 0 1px; } 480 | 481 | table.frame-topbot { border-width: 1px 0; } 482 | 483 | th.halign-left, td.halign-left { text-align: left; } 484 | 485 | th.halign-right, td.halign-right { text-align: right; } 486 | 487 | th.halign-center, td.halign-center { text-align: center; } 488 | 489 | th.valign-top, td.valign-top { vertical-align: top; } 490 | 491 | th.valign-bottom, td.valign-bottom { vertical-align: bottom; } 492 | 493 | th.valign-middle, td.valign-middle { vertical-align: middle; } 494 | 495 | table thead th, table tfoot th { font-weight: normal; } 496 | 497 | tbody tr th { display: table-cell; line-height: 1.4; background: whitesmoke; } 498 | 499 | tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #333333; font-weight: normal; } 500 | 501 | p.tableblock > code:only-child { background: none; padding: 0; } 502 | 503 | p.tableblock { font-size: 1em; } 504 | 505 | td > div.verse { white-space: pre; } 506 | 507 | ol { margin-left: 1.75em; } 508 | 509 | ul li ol { margin-left: 1.5em; } 510 | 511 | dl dd { margin-left: 1.125em; } 512 | 513 | dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; } 514 | 515 | ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; } 516 | 517 | ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; } 518 | 519 | ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; } 520 | 521 | ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1em; font-size: 0.85em; } 522 | 523 | ul.checklist li > p:first-child > input[type="checkbox"]:first-child { width: 1em; position: relative; top: 1px; } 524 | 525 | ul.inline { margin: 0 auto 0.625em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; } 526 | ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; } 527 | ul.inline > li > * { display: block; } 528 | 529 | .unstyled dl dt { font-weight: normal; font-style: normal; } 530 | 531 | ol.arabic { list-style-type: decimal; } 532 | 533 | ol.decimal { list-style-type: decimal-leading-zero; } 534 | 535 | ol.loweralpha { list-style-type: lower-alpha; } 536 | 537 | ol.upperalpha { list-style-type: upper-alpha; } 538 | 539 | ol.lowerroman { list-style-type: lower-roman; } 540 | 541 | ol.upperroman { list-style-type: upper-roman; } 542 | 543 | ol.lowergreek { list-style-type: lower-greek; } 544 | 545 | .hdlist > table, .colist > table { border: 0; background: none; } 546 | .hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; } 547 | 548 | td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; } 549 | 550 | td.hdlist1 { font-weight: bold; padding-bottom: 1.25em; } 551 | 552 | .literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; } 553 | 554 | .colist > table tr > td:first-of-type { padding: 0 0.75em; line-height: 1; } 555 | .colist > table tr > td:last-of-type { padding: 0.25em 0; } 556 | 557 | .thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; } 558 | 559 | .imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; } 560 | .imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; } 561 | .imageblock > .title { margin-bottom: 0; } 562 | .imageblock.thumb, .imageblock.th { border-width: 6px; } 563 | .imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; } 564 | 565 | .image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; } 566 | .image.left { margin-right: 0.625em; } 567 | .image.right { margin-left: 0.625em; } 568 | 569 | a.image { text-decoration: none; display: inline-block; } 570 | a.image object { pointer-events: none; } 571 | 572 | sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; } 573 | sup.footnote a, sup.footnoteref a { text-decoration: none; } 574 | sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; } 575 | 576 | #footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; } 577 | #footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; } 578 | #footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; } 579 | #footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; } 580 | #footnotes .footnote:last-of-type { margin-bottom: 0; } 581 | #content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; } 582 | 583 | .gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; } 584 | .gist .file-data > table td.line-data { width: 99%; } 585 | 586 | div.unbreakable { page-break-inside: avoid; } 587 | 588 | .big { font-size: larger; } 589 | 590 | .small { font-size: smaller; } 591 | 592 | .underline { text-decoration: underline; } 593 | 594 | .overline { text-decoration: overline; } 595 | 596 | .line-through { text-decoration: line-through; } 597 | 598 | .aqua { color: #00bfbf; } 599 | 600 | .aqua-background { background-color: #00fafa; } 601 | 602 | .black { color: black; } 603 | 604 | .black-background { background-color: black; } 605 | 606 | .blue { color: #0000bf; } 607 | 608 | .blue-background { background-color: #0000fa; } 609 | 610 | .fuchsia { color: #bf00bf; } 611 | 612 | .fuchsia-background { background-color: #fa00fa; } 613 | 614 | .gray { color: #606060; } 615 | 616 | .gray-background { background-color: #7d7d7d; } 617 | 618 | .green { color: #006000; } 619 | 620 | .green-background { background-color: #007d00; } 621 | 622 | .lime { color: #00bf00; } 623 | 624 | .lime-background { background-color: #00fa00; } 625 | 626 | .maroon { color: #600000; } 627 | 628 | .maroon-background { background-color: #7d0000; } 629 | 630 | .navy { color: #000060; } 631 | 632 | .navy-background { background-color: #00007d; } 633 | 634 | .olive { color: #606000; } 635 | 636 | .olive-background { background-color: #7d7d00; } 637 | 638 | .purple { color: #600060; } 639 | 640 | .purple-background { background-color: #7d007d; } 641 | 642 | .red { color: #bf0000; } 643 | 644 | .red-background { background-color: #fa0000; } 645 | 646 | .silver { color: #909090; } 647 | 648 | .silver-background { background-color: #bcbcbc; } 649 | 650 | .teal { color: #006060; } 651 | 652 | .teal-background { background-color: #007d7d; } 653 | 654 | .white { color: #bfbfbf; } 655 | 656 | .white-background { background-color: #fafafa; } 657 | 658 | .yellow { color: #bfbf00; } 659 | 660 | .yellow-background { background-color: #fafa00; } 661 | 662 | span.icon > .fa { cursor: default; } 663 | 664 | .admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; } 665 | .admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #b1c918; } 666 | .admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } 667 | .admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } 668 | .admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } 669 | .admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } 670 | 671 | .conum[data-value] { display: inline-block; color: #fff !important; background-color: #555555; -webkit-border-radius: 100px; border-radius: 100px; 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; } 672 | .conum[data-value] * { color: #fff !important; } 673 | .conum[data-value] + b { display: none; } 674 | .conum[data-value]:after { content: attr(data-value); } 675 | pre .conum[data-value] { position: relative; top: -0.125em; } 676 | 677 | b.conum * { color: inherit !important; } 678 | 679 | .conum:not([data-value]):empty { display: none; } 680 | 681 | #header > h1 { border-bottom-style: solid; } 682 | 683 | #toctitle { color: #333333; } 684 | 685 | .listingblock pre, .literalblock pre { background: -moz-linear-gradient(top, white 0%, #f4f4f4 100%); background: -webkit-linear-gradient(top, white 0%, #f4f4f4 100%); background: linear-gradient(to bottom, #ffffff 0%, #f4f4f4 100%); -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); } 686 | 687 | .sidebarblock { background: none; border: none; -webkit-box-shadow: 0 0 5px rgba(118, 137, 4, 0.5); box-shadow: 0 0 5px rgba(118, 137, 4, 0.5); } 688 | .sidebarblock > .content > .title { color: #181818; } 689 | --------------------------------------------------------------------------------