diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..69f3774
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,20 @@
+:title: scribble.github.io
+
+== Scribble Website
+
+image:https://travis-ci.org/scribble/scribble.github.io.svg?branch=pages["Build Status", link="https://travis-ci.org/scribble/scribble.github.io"]
+
+=== Description
+When pushing a commit into this branch, the site is automatically built and published to http://scribble.github.io
+Most likely the content of the website you are looking for is link:src/main/jbake/content/[here].
+
+=== Building the site on localhost
+. `git clone https://github.com/scribble/scribble.github.io`
+. `git checkout pages`
+. Provided Maven is installed, run one of following commands:
+
+* `mvn jbake:generate` Simply runs jbake and generate the site into `target/website` dir.
+* `mvn jbake:watch` Polls a folder and run jbake whenever changes happen.
+* `mvn jbake:inline` Same as watch, but also launches an embedded winstone container that by default listens on http://localhost:8080. Additionally you may want to use `-Djbake.port=X` `-Djbake.listenAddress=Y`.
+
+NOTE: `mvn install` will most likely fail on localhost, because it needs the OAuth token for GitHub.
diff --git a/blog.html b/blog.html
new file mode 100644
index 0000000..3777ede
--- /dev/null
+++ b/blog.html
@@ -0,0 +1,193 @@
+
+
+
+
+ Scribble
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Placeholder blog
+
03 March 2015
+
+
This is a placeholder for a blog entry.
+
+
+
+
+
+
+
+
+
RSS Feed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/blog/2015/2015-03-03-1.html b/blog/2015/2015-03-03-1.html
new file mode 100644
index 0000000..7575b35
--- /dev/null
+++ b/blog/2015/2015-03-03-1.html
@@ -0,0 +1,184 @@
+
+
+
+
+ Scribble - Placeholder blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Placeholder blog
+
blog post
+
+
+
+
+
+
+
This is a placeholder for a blog entry.
+
+
+
Published by Gary Brown on 03 March 2015
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/community/collaborators.html b/community/collaborators.html
new file mode 100644
index 0000000..8cb5f3f
--- /dev/null
+++ b/community/collaborators.html
@@ -0,0 +1,222 @@
+
+
+
+
+ Scribble - Collaborators
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Collaborators
+
Organisations that are collaborating on the development of the Scribble language and tools
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/community/discussions.html b/community/discussions.html
new file mode 100644
index 0000000..07107fa
--- /dev/null
+++ b/community/discussions.html
@@ -0,0 +1,201 @@
+
+
+
+
+ Scribble - Scribble Forums
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Scribble Forums
+
Get involved in the community
+
+
+
+
+
+
+
+
+
Contribute code, use cases or ideas
+
+
+
All code lives on GitHub under https://github.com/scribble . To contribute, fork the
+respective project(s), implement your changes and open a pull-request.
+
+
+
+
+
Contribute documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/community/issues.html b/community/issues.html
new file mode 100644
index 0000000..67ffdc6
--- /dev/null
+++ b/community/issues.html
@@ -0,0 +1,212 @@
+
+
+
+
+ Scribble - Reporting Issues
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Reporting Issues
+
Create issues to report bugs or request features/enhancements
+
+
+
+
+
+
+
+
+
Please select the issue tracking system associated with the appropriate component.
+
+
+
If you have a feature request, enhancement or bug report, please create an issue. If you wish to contribute
+to the project , then please review the reported issues and feel free to contribute a Pull Request (PR).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/css/asciidoctor.css b/css/asciidoctor.css
new file mode 100644
index 0000000..c687f36
--- /dev/null
+++ b/css/asciidoctor.css
@@ -0,0 +1,512 @@
+@import url(//cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css);
+/* ========================================================================== Embedded content ========================================================================== */
+/** Remove border when inside `a` element in IE 8/9. */
+img { border: 0; }
+
+/** Correct overflow displayed oddly in IE 9. */
+svg:not(:root) { overflow: hidden; }
+
+/* ========================================================================== Figures ========================================================================== */
+/** Address margin not present in IE 8/9 and Safari 5. */
+figure { margin: 0; }
+
+/* ========================================================================== Forms ========================================================================== */
+/** Define consistent border, margin, and padding. */
+fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
+
+/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
+legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
+
+/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */
+button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ }
+
+/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
+button, input { line-height: normal; }
+
+/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */
+button, select { text-transform: none; }
+
+/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
+button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
+
+/** Re-set default cursor for disabled elements. */
+button[disabled], html input[disabled] { cursor: default; }
+
+/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
+
+/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
+input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; }
+
+/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
+input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
+
+/** Remove inner padding and border in Firefox 4+. */
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
+
+/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */
+textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ }
+
+/* ========================================================================== Tables ========================================================================== */
+/** Remove most spacing between table cells. */
+table { border-collapse: collapse; border-spacing: 0; }
+
+*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
+
+img, object, embed { max-width: 100%; height: auto; }
+
+object, embed { height: 100%; }
+
+img { -ms-interpolation-mode: bicubic; }
+
+#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; }
+
+.left { float: left !important; }
+
+.right { float: right !important; }
+
+.text-left { text-align: left !important; }
+
+.text-right { text-align: right !important; }
+
+.text-center { text-align: center !important; }
+
+.text-justify { text-align: justify !important; }
+
+.hide { display: none; }
+
+.antialiased, body { -webkit-font-smoothing: antialiased; }
+
+img { display: inline-block; vertical-align: middle; }
+
+textarea { height: auto; min-height: 50px; }
+
+select { width: 100%; }
+
+p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; }
+
+.subheader, #content #toctitle, .admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }
+
+/* Lists */
+ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 1.25em; list-style-position: outside; font-family: inherit; }
+
+ul, ol { margin-left: 1.5em; }
+
+/* Unordered Lists */
+ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ }
+ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; }
+ul.square { list-style-type: square; }
+ul.circle { list-style-type: circle; }
+ul.disc { list-style-type: disc; }
+ul.no-bullet { list-style: none; }
+
+/* Ordered Lists */
+ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; }
+
+/* Definition Lists */
+dl dt { margin-bottom: 0.3125em; font-weight: bold; }
+dl dd { margin-bottom: 1.25em; }
+
+/* Abbreviations */
+abbr, acronym { text-transform: uppercase; font-size: 90%; color: #222222; border-bottom: 1px dotted #dddddd; cursor: help; }
+
+abbr { text-transform: none; }
+
+/* Blockquotes */
+blockquote { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; }
+blockquote cite { display: block; font-size: inherit; color: #555555; }
+blockquote cite:before { content: "\2014 \0020"; }
+blockquote cite a, blockquote cite a:visited { color: #555555; }
+
+blockquote, blockquote p { line-height: 1.6; color: #6f6f6f; }
+
+/* Microformats */
+.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; }
+.vcard li { margin: 0; display: block; }
+.vcard .fn { font-weight: bold; font-size: 0.9375em; }
+
+.vevent .summary { font-weight: bold; }
+.vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; }
+
+@media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }
+ h1 { font-size: 2.75em; }
+ h2 { font-size: 2.3125em; }
+ h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; }
+ h4 { font-size: 1.4375em; } }
+/* Print styles. Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com)
+*/
+.print-only { display: none !important; }
+
+@media print { * { background: transparent !important; color: #000 !important; /* Black prints faster: h5bp.com/s */ box-shadow: none !important; text-shadow: none !important; }
+ a, a:visited { text-decoration: underline; }
+ a[href]:after { content: " (" attr(href) ")"; }
+ abbr[title]:after { content: " (" attr(title) ")"; }
+ .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
+ pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+ thead { display: table-header-group; /* h5bp.com/t */ }
+ tr, img { page-break-inside: avoid; }
+ img { max-width: 100% !important; }
+ @page { margin: 0.5cm; }
+ p, h2, h3, #toctitle, .sidebarblock > .content > .title { orphans: 3; widows: 3; }
+ h2, h3, #toctitle, .sidebarblock > .content > .title { page-break-after: avoid; }
+ .hide-on-print { display: none !important; }
+ .print-only { display: block !important; }
+ .hide-for-print { display: none !important; }
+ .show-for-print { display: inherit !important; } }
+/* Tables */
+table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; }
+table thead, table tfoot { background: whitesmoke; font-weight: bold; }
+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; }
+table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; }
+table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; }
+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.6; }
+
+.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; }
+.clearfix:after, .float-group:after { clear: both; }
+
+*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; }
+
+/*pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; }*/
+
+kbd.keyseq { color: #555555; }
+
+kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; 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 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; }
+
+kbd kbd:first-child { margin-left: 0; }
+
+kbd kbd:last-child { margin-right: 0; }
+
+.menuseq, .menu { color: #090909; }
+
+p a > code:hover { color: #561309; }
+
+#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; }
+#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; }
+#header:after, #content:after, #footnotes:after, #footer:after { clear: both; }
+
+#header { margin-bottom: 2.5em; }
+#header > h1 { color: black; font-weight: normal; border-bottom: 1px solid #dddddd; margin-bottom: -28px; padding-bottom: 32px; }
+#header span { color: #6f6f6f; }
+#header #revnumber { text-transform: capitalize; }
+#header br { display: none; }
+#header br + span { padding-left: 3px; }
+#header br + span:before { content: "\2013 \0020"; }
+#header br + span.author { padding-left: 0; }
+#header br + span.author:before { content: ", "; }
+
+#toc { border-bottom: 3px double #ebebeb; padding-bottom: 1.25em; }
+#toc > ul { margin-left: 0.25em; }
+#toc ul.sectlevel0 > li > a { font-style: italic; }
+#toc ul.sectlevel0 ul.sectlevel1 { margin-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; }
+#toc ul { list-style-type: none; }
+
+#toctitle { color: #7a2518; }
+
+@media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; }
+ #toc.toc2 { position: fixed; width: 20em; left: 0; top: 0; border-right: 1px solid #ebebeb; border-bottom: 0; z-index: 1000; padding: 1em; height: 100%; overflow: auto; }
+ #toc.toc2 #toctitle { margin-top: 0; }
+ #toc.toc2 > ul { font-size: .95em; }
+ #toc.toc2 ul ul { margin-left: 0; padding-left: 1.25em; }
+ #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; }
+ body.toc2.toc-right { padding-left: 0; padding-right: 20em; }
+ body.toc2.toc-right #toc.toc2 { border-right: 0; border-left: 1px solid #ebebeb; left: auto; right: 0; } }
+#content #toc { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; border-width: 0; -webkit-border-radius: 4px; border-radius: 4px; }
+#content #toc > :first-child { margin-top: 0; }
+#content #toc > :last-child { margin-bottom: 0; }
+#content #toc a { text-decoration: none; }
+
+#content #toctitle { font-weight: bold; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-size: 1em; padding-left: 0.125em; }
+
+#footer { max-width: 100%; background-color: #222222; padding: 1.25em; }
+
+#footer-text { color: #dddddd; line-height: 1.44; }
+
+.sect1 { padding-bottom: 1.25em; }
+
+.sect1 + .sect1 { border-top: 3px double #ebebeb; }
+
+#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; width: 1em; margin-left: -1em; display: block; text-decoration: none; visibility: hidden; text-align: center; font-weight: normal; }
+#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: .85em; vertical-align: text-top; display: block; margin-top: 0.05em; }
+#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; }
+#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: #ba3925; text-decoration: none; }
+#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: #a53221; }
+
+.imageblock, .literalblock, .listingblock, .verseblock, .videoblock { margin-bottom: 1.25em; }
+
+.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; }
+
+.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; }
+
+table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }
+
+.admonitionblock > table { border: 0; background: none; width: 100%; }
+.admonitionblock > table td.icon { text-align: center; width: 80px; }
+.admonitionblock > table td.icon img { max-width: none; }
+.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; }
+.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; }
+.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
+
+.exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 4px; border-radius: 4px; }
+.exampleblock > .content > :first-child { margin-top: 0; }
+.exampleblock > .content > :last-child { margin-bottom: 0; }
+.exampleblock > .content h1, .exampleblock > .content h2, .exampleblock > .content h3, .exampleblock > .content #toctitle, .sidebarblock.exampleblock > .content > .title, .exampleblock > .content h4, .exampleblock > .content h5, .exampleblock > .content h6, .exampleblock > .content p { color: #333333; }
+.exampleblock > .content h1, .exampleblock > .content h2, .exampleblock > .content h3, .exampleblock > .content #toctitle, .sidebarblock.exampleblock > .content > .title, .exampleblock > .content h4, .exampleblock > .content h5, .exampleblock > .content h6 { line-height: 1; margin-bottom: 0.625em; }
+.exampleblock > .content h1.subheader, .exampleblock > .content h2.subheader, .exampleblock > .content h3.subheader, .exampleblock > .content .subheader#toctitle, .sidebarblock.exampleblock > .content > .subheader.title, .exampleblock > .content h4.subheader, .exampleblock > .content h5.subheader, .exampleblock > .content h6.subheader { line-height: 1.4; }
+
+.exampleblock.result > .content { -webkit-box-shadow: 0 1px 8px #d9d9d9; box-shadow: 0 1px 8px #d9d9d9; }
+
+.sidebarblock { border-style: solid; border-width: 1px; border-color: #d9d9d9; margin-bottom: 1.25em; padding: 1.25em; background: #f2f2f2; -webkit-border-radius: 4px; border-radius: 4px; }
+.sidebarblock > :first-child { margin-top: 0; }
+.sidebarblock > :last-child { margin-bottom: 0; }
+.sidebarblock h1, .sidebarblock h2, .sidebarblock h3, .sidebarblock #toctitle, .sidebarblock > .content > .title, .sidebarblock h4, .sidebarblock h5, .sidebarblock h6, .sidebarblock p { color: #333333; }
+.sidebarblock h1, .sidebarblock h2, .sidebarblock h3, .sidebarblock #toctitle, .sidebarblock > .content > .title, .sidebarblock h4, .sidebarblock h5, .sidebarblock h6 { line-height: 1; margin-bottom: 0.625em; }
+.sidebarblock h1.subheader, .sidebarblock h2.subheader, .sidebarblock h3.subheader, .sidebarblock .subheader#toctitle, .sidebarblock > .content > .subheader.title, .sidebarblock h4.subheader, .sidebarblock h5.subheader, .sidebarblock h6.subheader { line-height: 1.4; }
+.sidebarblock > .content > .title { color: #7a2518; margin-top: 0; line-height: 1.6; }
+
+.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; }
+
+/*.literalblock > .content pre, .listingblock > .content pre { background: none; border-width: 1px 0; border-style: dotted; border-color: #bfbfbf; -webkit-border-radius: 4px; border-radius: 4px; padding: 0.75em 0.75em 0.5em 0.75em; word-wrap: break-word; }*/
+.literalblock > .content pre.nowrap, .listingblock > .content pre.nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; }
+.literalblock > .content pre > code, .listingblock > .content pre > code { display: block; }
+@media only screen { .literalblock > .content pre, .listingblock > .content pre { font-size: 0.8em; } }
+@media only screen and (min-width: 768px) { .literalblock > .content pre, .listingblock > .content pre { font-size: 0.9em; } }
+@media only screen and (min-width: 1280px) { .literalblock > .content pre, .listingblock > .content pre { font-size: 1em; } }
+
+.listingblock > .content { position: relative; }
+
+.listingblock:hover code[class*=" language-"]:before { text-transform: uppercase; font-size: 0.9em; color: #999; position: absolute; top: 0.375em; right: 0.375em; }
+
+.listingblock:hover code.asciidoc:before { content: "asciidoc"; }
+.listingblock:hover code.clojure:before { content: "clojure"; }
+.listingblock:hover code.css:before { content: "css"; }
+.listingblock:hover code.groovy:before { content: "groovy"; }
+.listingblock:hover code.html:before { content: "html"; }
+.listingblock:hover code.java:before { content: "java"; }
+.listingblock:hover code.javascript:before { content: "javascript"; }
+.listingblock:hover code.python:before { content: "python"; }
+.listingblock:hover code.ruby:before { content: "ruby"; }
+.listingblock:hover code.scss:before { content: "scss"; }
+.listingblock:hover code.xml:before { content: "xml"; }
+.listingblock:hover code.yaml:before { content: "yaml"; }
+
+.listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; }
+
+.listingblock.terminal pre .command:not([data-prompt]):before { content: '$'; }
+
+table.pyhltable { border: 0; margin-bottom: 0; }
+
+table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; }
+
+table.pyhltable td.code { padding-left: .75em; padding-right: 0; }
+
+.highlight.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; }
+
+.highlight.pygments .lineno { display: inline-block; margin-right: .25em; }
+
+table.pyhltable .linenodiv { background-color: transparent !important; padding-right: 0 !important; }
+
+.quoteblock { margin: 0 0 1.25em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; }
+.quoteblock blockquote { margin: 0 0 1.25em 0; padding: 0 0 0.5625em 0; border: 0; }
+.quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; }
+.quoteblock .attribution { margin-top: -.25em; padding-bottom: 0.5625em; font-size: inherit; color: #555555; }
+.quoteblock .attribution br { display: none; }
+.quoteblock .attribution cite { display: block; margin-bottom: 0.625em; }
+
+table thead th, table tfoot th { font-weight: bold; }
+
+table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; }
+
+table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; }
+
+table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; }
+
+table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; }
+
+th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; }
+
+th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; }
+
+th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; }
+
+th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; }
+
+th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; }
+
+th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; }
+
+p.tableblock.header { color: #222222; font-weight: bold; }
+
+td > div.verse { white-space: pre; }
+
+ol { margin-left: 1.75em; }
+
+ul li ol { margin-left: 1.5em; }
+
+dl dd { margin-left: 1.125em; }
+
+dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; }
+
+ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.625em; }
+
+ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; }
+
+ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; }
+
+ul.checklist li > p:first-child > i[class^="icon-check"]:first-child, ul.checklist li > p:first-child > input[type="checkbox"]:first-child { margin-right: 0.25em; }
+
+ul.checklist li > p:first-child > input[type="checkbox"]:first-child { position: relative; top: 1px; }
+
+ul.inline { margin: 0 auto 0.625em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; }
+ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; }
+ul.inline > li > * { display: block; }
+
+.unstyled dl dt { font-weight: normal; font-style: normal; }
+
+ol.arabic { list-style-type: decimal; }
+
+ol.decimal { list-style-type: decimal-leading-zero; }
+
+ol.loweralpha { list-style-type: lower-alpha; }
+
+ol.upperalpha { list-style-type: upper-alpha; }
+
+ol.lowerroman { list-style-type: lower-roman; }
+
+ol.upperroman { list-style-type: upper-roman; }
+
+ol.lowergreek { list-style-type: lower-greek; }
+
+.hdlist > table, .colist > table { border: 0; background: none; }
+.hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; }
+
+td.hdlist1 { padding-right: .8em; font-weight: bold; }
+
+td.hdlist1, td.hdlist2 { vertical-align: top; }
+
+.literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; }
+
+.colist > table tr > td:first-of-type { padding: 0 .8em; line-height: 1; }
+.colist > table tr > td:last-of-type { padding: 0.25em 0; }
+
+.qanda > ol > li > p > em:only-child { color: #00467f; }
+
+.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; }
+
+.imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; }
+.imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; }
+.imageblock > .title { margin-bottom: 0; }
+.imageblock.thumb, .imageblock.th { border-width: 6px; }
+.imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; }
+
+.image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; }
+.image.left { margin-right: 0.625em; }
+.image.right { margin-left: 0.625em; }
+
+a.image { text-decoration: none; }
+
+span.footnote, span.footnoteref { vertical-align: super; font-size: 0.875em; }
+span.footnote a, span.footnoteref a { text-decoration: none; }
+
+#footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; }
+#footnotes hr { width: 20%; min-width: 6.25em; margin: -.25em 0 .75em 0; border-width: 1px 0 0 0; }
+#footnotes .footnote { padding: 0 0.375em; line-height: 1.3; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.2em; margin-bottom: .2em; }
+#footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; }
+#footnotes .footnote:last-of-type { margin-bottom: 0; }
+
+#content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; }
+
+.gist .file-data > table { border: none; background: #fff; width: 100%; margin-bottom: 0; }
+.gist .file-data > table td.line-data { width: 99%; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+.big { font-size: larger; }
+
+.small { font-size: smaller; }
+
+.underline { text-decoration: underline; }
+
+.overline { text-decoration: overline; }
+
+.line-through { text-decoration: line-through; }
+
+.aqua { color: #00bfbf; }
+
+.aqua-background { background-color: #00fafa; }
+
+.black { color: black; }
+
+.black-background { background-color: black; }
+
+.blue { color: #0000bf; }
+
+.blue-background { background-color: #0000fa; }
+
+.fuchsia { color: #bf00bf; }
+
+.fuchsia-background { background-color: #fa00fa; }
+
+.gray { color: #606060; }
+
+.gray-background { background-color: #7d7d7d; }
+
+.green { color: #006000; }
+
+.green-background { background-color: #007d00; }
+
+.lime { color: #00bf00; }
+
+.lime-background { background-color: #00fa00; }
+
+.maroon { color: #600000; }
+
+.maroon-background { background-color: #7d0000; }
+
+.navy { color: #000060; }
+
+.navy-background { background-color: #00007d; }
+
+.olive { color: #606000; }
+
+.olive-background { background-color: #7d7d00; }
+
+.purple { color: #600060; }
+
+.purple-background { background-color: #7d007d; }
+
+.red { color: #bf0000; }
+
+.red-background { background-color: #fa0000; }
+
+.silver { color: #909090; }
+
+.silver-background { background-color: #bcbcbc; }
+
+.teal { color: #006060; }
+
+.teal-background { background-color: #007d7d; }
+
+.white { color: #bfbfbf; }
+
+.white-background { background-color: #fafafa; }
+
+.yellow { color: #bfbf00; }
+
+.yellow-background { background-color: #fafa00; }
+
+span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
+
+.admonitionblock td.icon [class^="icon-"]:before { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; }
+.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; }
+.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
+.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
+.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
+.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
+
+.conum { display: inline-block; color: white !important; background-color: #222222; -webkit-border-radius: 100px; border-radius: 100px; text-align: center; width: 20px; height: 20px; font-size: 12px; font-weight: bold; line-height: 20px; font-family: Arial, sans-serif; font-style: normal; position: relative; top: -2px; letter-spacing: -1px; }
+.conum * { color: white !important; }
+.conum + b { display: none; }
+.conum:after { content: attr(data-value); }
+.conum:not([data-value]):empty { display: none; }
+
+.literalblock > .content > pre, .listingblock > .content > pre { -webkit-border-radius: 0; border-radius: 0; }
diff --git a/css/base.css b/css/base.css
new file mode 100644
index 0000000..68fe241
--- /dev/null
+++ b/css/base.css
@@ -0,0 +1,52 @@
+/* Sticky footer styles
+-------------------------------------------------- */
+
+html,
+body {
+ height: 100%;
+ /* The html and body elements cannot have any padding or margin. */
+}
+
+/* Wrapper for page content to push down footer */
+#wrap {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ /* Negative indent footer by it's height */
+ margin: 0 auto -60px;
+}
+
+/* Set the fixed height of the footer here */
+#push,
+#footer {
+ height: 60px;
+}
+#footer {
+ background-color: #f5f5f5;
+ padding: 0;
+}
+
+/* Lastly, apply responsive CSS fixes as necessary */
+@media (max-width: 767px) {
+ #footer {
+ margin-left: -20px;
+ margin-right: -20px;
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+}
+
+/* Custom page CSS
+-------------------------------------------------- */
+/* Not required for template or sticky footer method. */
+
+#wrap > .container {
+ padding-top: 60px;
+}
+.container .credit {
+ margin: 20px 0;
+}
+
+/*code {
+ font-size: 80%;
+}*/
\ No newline at end of file
diff --git a/css/bootstrap-theme.css b/css/bootstrap-theme.css
deleted file mode 100644
index df2d3d9..0000000
--- a/css/bootstrap-theme.css
+++ /dev/null
@@ -1,397 +0,0 @@
-/*!
- * Bootstrap v3.0.3 (http://getbootstrap.com)
- * Copyright 2013 Twitter, Inc.
- * Licensed under http://www.apache.org/licenses/LICENSE-2.0
- */
-
-.btn-default,
-.btn-primary,
-.btn-success,
-.btn-info,
-.btn-warning,
-.btn-danger {
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.btn-default:active,
-.btn-primary:active,
-.btn-success:active,
-.btn-info:active,
-.btn-warning:active,
-.btn-danger:active,
-.btn-default.active,
-.btn-primary.active,
-.btn-success.active,
-.btn-info.active,
-.btn-warning.active,
-.btn-danger.active {
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-
-.btn:active,
-.btn.active {
- background-image: none;
-}
-
-.btn-default {
- text-shadow: 0 1px 0 #fff;
- background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
- background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);
- background-repeat: repeat-x;
- border-color: #dbdbdb;
- border-color: #ccc;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-default:hover,
-.btn-default:focus {
- background-color: #e0e0e0;
- background-position: 0 -15px;
-}
-
-.btn-default:active,
-.btn-default.active {
- background-color: #e0e0e0;
- border-color: #dbdbdb;
-}
-
-.btn-primary {
- background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
- background-repeat: repeat-x;
- border-color: #2b669a;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-primary:hover,
-.btn-primary:focus {
- background-color: #2d6ca2;
- background-position: 0 -15px;
-}
-
-.btn-primary:active,
-.btn-primary.active {
- background-color: #2d6ca2;
- border-color: #2b669a;
-}
-
-.btn-success {
- background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
- background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
- background-repeat: repeat-x;
- border-color: #3e8f3e;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-success:hover,
-.btn-success:focus {
- background-color: #419641;
- background-position: 0 -15px;
-}
-
-.btn-success:active,
-.btn-success.active {
- background-color: #419641;
- border-color: #3e8f3e;
-}
-
-.btn-warning {
- background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
- background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
- background-repeat: repeat-x;
- border-color: #e38d13;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-warning:hover,
-.btn-warning:focus {
- background-color: #eb9316;
- background-position: 0 -15px;
-}
-
-.btn-warning:active,
-.btn-warning.active {
- background-color: #eb9316;
- border-color: #e38d13;
-}
-
-.btn-danger {
- background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
- background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
- background-repeat: repeat-x;
- border-color: #b92c28;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-danger:hover,
-.btn-danger:focus {
- background-color: #c12e2a;
- background-position: 0 -15px;
-}
-
-.btn-danger:active,
-.btn-danger.active {
- background-color: #c12e2a;
- border-color: #b92c28;
-}
-
-.btn-info {
- background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
- background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
- background-repeat: repeat-x;
- border-color: #28a4c9;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-info:hover,
-.btn-info:focus {
- background-color: #2aabd2;
- background-position: 0 -15px;
-}
-
-.btn-info:active,
-.btn-info.active {
- background-color: #2aabd2;
- border-color: #28a4c9;
-}
-
-.thumbnail,
-.img-thumbnail {
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
- background-color: #e8e8e8;
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
- background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-}
-
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
- background-color: #357ebd;
- background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
-}
-
-.navbar-default {
- background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
- background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
- background-repeat: repeat-x;
- border-radius: 4px;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
-}
-
-.navbar-default .navbar-nav > .active > a {
- background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
- background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
- -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
-}
-
-.navbar-brand,
-.navbar-nav > li > a {
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
-}
-
-.navbar-inverse {
- background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);
- background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.navbar-inverse .navbar-nav > .active > a {
- background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%);
- background-image: linear-gradient(to bottom, #222222 0%, #282828 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
- -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
- box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
-}
-
-.navbar-inverse .navbar-brand,
-.navbar-inverse .navbar-nav > li > a {
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.navbar-static-top,
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- border-radius: 0;
-}
-
-.alert {
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.alert-success {
- background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
- background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
- background-repeat: repeat-x;
- border-color: #b2dba1;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
-}
-
-.alert-info {
- background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
- background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
- background-repeat: repeat-x;
- border-color: #9acfea;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
-}
-
-.alert-warning {
- background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
- background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
- background-repeat: repeat-x;
- border-color: #f5e79e;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
-}
-
-.alert-danger {
- background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
- background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
- background-repeat: repeat-x;
- border-color: #dca7a7;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
-}
-
-.progress {
- background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
- background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
-}
-
-.progress-bar {
- background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
-}
-
-.progress-bar-success {
- background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
- background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
-}
-
-.progress-bar-info {
- background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
- background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
-}
-
-.progress-bar-warning {
- background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
- background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
-}
-
-.progress-bar-danger {
- background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
- background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
-}
-
-.list-group {
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-}
-
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
- text-shadow: 0 -1px 0 #3071a9;
- background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
- background-repeat: repeat-x;
- border-color: #3278b3;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
-}
-
-.panel {
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.panel-default > .panel-heading {
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
- background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-}
-
-.panel-primary > .panel-heading {
- background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
-}
-
-.panel-success > .panel-heading {
- background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
- background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
-}
-
-.panel-info > .panel-heading {
- background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
- background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
-}
-
-.panel-warning > .panel-heading {
- background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
- background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
-}
-
-.panel-danger > .panel-heading {
- background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
- background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
-}
-
-.well {
- background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
- background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
- background-repeat: repeat-x;
- border-color: #dcdcdc;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
- -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
- box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
-}
\ No newline at end of file
diff --git a/css/bootstrap-theme.min.css b/css/bootstrap-theme.min.css
deleted file mode 100644
index c7b6d39..0000000
--- a/css/bootstrap-theme.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v3.0.3 (http://getbootstrap.com)
- * Copyright 2013 Twitter, Inc.
- * Licensed under http://www.apache.org/licenses/LICENSE-2.0
- */
-
-.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
\ No newline at end of file
diff --git a/css/bootstrap.min.css b/css/bootstrap.min.css
index c547283..679272d 100644
--- a/css/bootstrap.min.css
+++ b/css/bootstrap.min.css
@@ -1,7 +1,7 @@
/*!
- * Bootstrap v3.0.3 (http://getbootstrap.com)
- * Copyright 2013 Twitter, Inc.
- * Licensed under http://www.apache.org/licenses/LICENSE-2.0
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small,h1 .small,h2 .small,h3 .small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small,h4 .small,h5 .small,h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#8a6d3b}.text-warning:hover{color:#66512c}.text-danger{color:#a94442}.text-danger:hover{color:#843534}.text-success{color:#3c763d}.text-success:hover{color:#2b542c}.text-info{color:#31708f}.text-info:hover{color:#245269}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small,blockquote .small{display:block;line-height:1.428571429;color:#999}blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small,blockquote.pull-right .small{text-align:right}blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>.active,.table>tbody>tr>.active,.table>tfoot>tr>.active,.table>thead>.active>td,.table>tbody>.active>td,.table>tfoot>.active>td,.table>thead>.active>th,.table>tbody>.active>th,.table>tfoot>.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>.active:hover,.table-hover>tbody>.active:hover>td,.table-hover>tbody>.active:hover>th{background-color:#e8e8e8}.table>thead>tr>.success,.table>tbody>tr>.success,.table>tfoot>tr>.success,.table>thead>.success>td,.table>tbody>.success>td,.table>tfoot>.success>td,.table>thead>.success>th,.table>tbody>.success>th,.table>tfoot>.success>th{background-color:#dff0d8}.table-hover>tbody>tr>.success:hover,.table-hover>tbody>.success:hover>td,.table-hover>tbody>.success:hover>th{background-color:#d0e9c6}.table>thead>tr>.danger,.table>tbody>tr>.danger,.table>tfoot>tr>.danger,.table>thead>.danger>td,.table>tbody>.danger>td,.table>tfoot>.danger>td,.table>thead>.danger>th,.table>tbody>.danger>th,.table>tfoot>.danger>th{background-color:#f2dede}.table-hover>tbody>tr>.danger:hover,.table-hover>tbody>.danger:hover>td,.table-hover>tbody>.danger:hover>th{background-color:#ebcccc}.table>thead>tr>.warning,.table>tbody>tr>.warning,.table>tfoot>tr>.warning,.table>thead>.warning>td,.table>tbody>.warning>td,.table>tfoot>.warning>td,.table>thead>.warning>th,.table>tbody>.warning>th,.table>tfoot>.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>.warning:hover,.table-hover>tbody>.warning:hover>td,.table-hover>tbody>.warning:hover>th{background-color:#faf2cc}@media(max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-control-static{padding-top:7px}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#fff}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1;-moz-osx-font-smoothing:grayscale}.glyphicon:empty{width:1em}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn:first-child>.btn{margin-right:-1px}.input-group-btn:last-child>.btn{margin-left:-1px}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child th,.panel>.table>tbody:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}table.hidden-xs{display:table}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,tr.hidden-xs.hidden-md,th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}table.hidden-sm{display:table}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,tr.hidden-sm.hidden-md,th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}table.hidden-md{display:table}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs,tr.hidden-md.hidden-xs,th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,tr.hidden-md.hidden-sm,th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg,tr.hidden-md.hidden-lg,th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}table.hidden-lg{display:table}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,tr.hidden-lg.hidden-md,th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print,tr.visible-print,th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none!important}}
\ No newline at end of file
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/css/prettify.css b/css/prettify.css
new file mode 100644
index 0000000..805d39b
--- /dev/null
+++ b/css/prettify.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
diff --git a/css/scribble.css b/css/scribble.css
deleted file mode 100644
index 44269cd..0000000
--- a/css/scribble.css
+++ /dev/null
@@ -1,218 +0,0 @@
-body {
- padding-top: 0px;
- background-color: #999;
- background-image: url("../img/background.png");
- background-position: 0px 0px;
- font: 13px/1.5 'Droid Sans',Arial,'Liberation Sans',FreeSans,sans-serif;
-}
-
-.container {
- margin-top: 30px;
- background-color: #1e2e48;
- padding: 0px;
- border-radius: 8px 8px 8px 8px;
- -webkit-border-radius: 6px 6px 6px 6px;
-}
-
-.container .inner {
- background-color: #eee;
- padding: 20px;
-}
-
-.footer {
- border-top: 1px solid black;
- color: white;
- padding: 5px;
- padding-right: 30px;
- text-align: right;
- font-size: 18px;
- text-shadow: 1px 1px 1px #222;
-}
-
-/* Main marketing message and sign up button */
-.container .jumbotron {
- padding-top: 20px;
- text-align: center;
- background-color: transparent;
- background-image: url('../imgs/scribble-banner-1180px.png');
- color: white;
- border-radius: 6px 6px 0px 0px;
- -webkit-border-radius: 6px 6px 0px 0px;
- height: 110px;
- margin-bottom: 0px;
-}
-
-.container .jumbotron .btn {
- font-size: 18px;
- padding: 14px 24px;
- width: 200px;
-}
-
-.jumbotron .btn {
- background-color: hsl(360, 50%, 29%) !important;
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#bb3e3e", endColorstr="#6e2424");
- background-image: -khtml-gradient(linear, left top, left bottom, from(#bb3e3e), to(#6e2424));
- background-image: -moz-linear-gradient(top, #bb3e3e, #6e2424);
- background-image: -ms-linear-gradient(top, #bb3e3e, #6e2424);
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bb3e3e), color-stop(100%, #6e2424));
- background-image: -webkit-linear-gradient(top, #bb3e3e, #6e2424);
- background-image: -o-linear-gradient(top, #bb3e3e, #6e2424);
- background-image: linear-gradient(#bb3e3e, #6e2424);
- border-color: #6e2424 #6e2424 hsl(360, 50%, 24%);
- color: #fff !important;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.33);
- -webkit-font-smoothing: antialiased;
-}
-.jumbotron .btn:hover {
- background-color: hsl(360, 52%, 26%) !important;
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#b23838", endColorstr="#641f1f");
- background-image: -khtml-gradient(linear, left top, left bottom, from(#b23838), to(#641f1f));
- background-image: -moz-linear-gradient(top, #b23838, #641f1f);
- background-image: -ms-linear-gradient(top, #b23838, #641f1f);
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b23838), color-stop(100%, #641f1f));
- background-image: -webkit-linear-gradient(top, #b23838, #641f1f);
- background-image: -o-linear-gradient(top, #b23838, #641f1f);
- background-image: linear-gradient(#b23838, #641f1f);
- border-color: #641f1f #641f1f hsl(360, 52%, 21%);
-}
-
-.inner h1 {
- font-size: 56px;
-}
-
-.inner .features {
- padding: 40px;
- padding-top: 20px;
- border-bottom: 1px solid #ccc;
- margin-left: -20px;
- margin-right: -20px;
-}
-
-.inner .features h3 {
- text-align: center;
- letter-spacing: -1px;
- font-weight: bold;
- text-shadow: 1px 1px 1px white;
- font-size: 24px;
-}
-
-.inner .features p {
- line-height: 18px;
- font-size: 15px;
- text-align: center;
- color: #666;
-}
-
-.inner .community {
- padding-top: 10px;
- background-color: transparent;
- padding: 20px;
-}
-
-.inner .community .citem {
- padding: 6px;
- padding-bottom: 15px;
-}
-
-.inner .community .citem h3 {
- text-shadow: 1px 1px 1px white;
- border-bottom: 1px solid #ddd;
-}
-
-.inner .community .citem .version {
- font-weight: bold;
- color: #444;
-}
-
-.inner .community .citem p {
- line-height: 16px;
-}
-
-.inner .community .citem .links {
- color: #666;
-}
-
-.inner .community .citem .links a {
- font-weight: bold;
-}
-
-.inner .community .minor h3 {
- color: #888;
- text-shadow: none;
-}
-
-.inner .community .minor .version {
- color: #999;
-}
-
-.inner .community .minor p {
- color: #999;
-}
-
-.inner .collaborators {
- background-color: white;
- padding: 40px;
- padding-top: 20px;
- border-bottom: 1px solid #ccc;
- margin-left: -20px;
- margin-right: -20px;
-}
-
-
-@media ( min-width : 768px) {
- .nav-justified {
- max-height: 52px;
- }
- .nav-justified>li>a {
- border-left: 1px solid #fff;
- border-right: 1px solid #d5d5d5;
- }
- .nav-justified>li:first-child>a {
- border-left: 0;
- border-radius: 5px 0 0 5px;
- }
- .nav-justified>li:last-child>a {
- border-radius: 0 5px 5px 0;
- border-right: 0;
- }
-}
-
-
-/* Responsive: Portrait tablets and up */
-@media screen and ( min-width: 768px ) {
-}
-
-
-@media ( max-width: 767px ) {
- .container {
- border-radius: 0px;
- -webkit-border-radius: 0px;
- margin-top: 0px;
- }
- .container .jumbotron {
- border-radius: 0px;
- -webkit-border-radius: 0px;
- }
- .jumbotron h1 {
- font-size: 32px;
- }
- .inner .features {
- padding: 20px;
- padding-top: 0px;
- }
-}
-
-
-@media ( max-width: 480px ) {
- .container .jumbotron .lead {
- display:none;
- }
- .container .jumbotron .btn {
- margin-top: 5px;
- }
- .hide-480 {
- display: none;
- }
-}
diff --git a/css/bootstrap.css b/css/styles.css
similarity index 55%
rename from css/bootstrap.css
rename to css/styles.css
index bbda4ee..ed9939e 100644
--- a/css/bootstrap.css
+++ b/css/styles.css
@@ -1,15 +1,14 @@
-/*!
- * Bootstrap v3.0.0
- *
- * Copyright 2013 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world by @mdo and @fat.
- */
-
-/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
-
+@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600);
+@import url(//fonts.googleapis.com/css?family=Exo+2:400,300,600);
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
article,
aside,
details,
@@ -19,206 +18,178 @@ footer,
header,
hgroup,
main,
+menu,
nav,
section,
summary {
display: block;
}
-
audio,
canvas,
+progress,
video {
display: inline-block;
+ vertical-align: baseline;
}
-
audio:not([controls]) {
display: none;
height: 0;
}
-
-[hidden] {
+[hidden],
+template {
display: none;
}
-
-html {
- font-family: sans-serif;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
-}
-
-body {
- margin: 0;
-}
-
-a:focus {
- outline: thin dotted;
+a {
+ background-color: transparent;
}
-
a:active,
a:hover {
outline: 0;
}
-
-h1 {
- margin: 0.67em 0;
- font-size: 2em;
-}
-
abbr[title] {
border-bottom: 1px dotted;
}
-
b,
strong {
font-weight: bold;
}
-
dfn {
font-style: italic;
}
-
-hr {
- height: 0;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
}
-
mark {
- color: #000;
background: #ff0;
+ color: #000;
}
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, serif;
- font-size: 1em;
-}
-
-pre {
- white-space: pre-wrap;
-}
-
-q {
- quotes: "\201C" "\201D" "\2018" "\2019";
-}
-
small {
font-size: 80%;
}
-
sub,
sup {
- position: relative;
font-size: 75%;
line-height: 0;
+ position: relative;
vertical-align: baseline;
}
-
sup {
top: -0.5em;
}
-
sub {
bottom: -0.25em;
}
-
img {
border: 0;
}
-
svg:not(:root) {
overflow: hidden;
}
-
figure {
- margin: 0;
+ margin: 1em 40px;
}
-
-fieldset {
- padding: 0.35em 0.625em 0.75em;
- margin: 0 2px;
- border: 1px solid #c0c0c0;
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
}
-
-legend {
- padding: 0;
- border: 0;
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
}
-
button,
input,
+optgroup,
select,
textarea {
+ color: inherit;
+ font: inherit;
margin: 0;
- font-family: inherit;
- font-size: 100%;
}
-
-button,
-input {
- line-height: normal;
+button {
+ overflow: visible;
}
-
button,
select {
text-transform: none;
}
-
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
- cursor: pointer;
-webkit-appearance: button;
+ cursor: pointer;
}
-
button[disabled],
html input[disabled] {
cursor: default;
}
-
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+input {
+ line-height: normal;
+}
input[type="checkbox"],
input[type="radio"] {
- padding: 0;
box-sizing: border-box;
+ padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
}
-
input[type="search"] {
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
-webkit-appearance: textfield;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
}
-
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- padding: 0;
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
border: 0;
+ padding: 0;
}
-
textarea {
overflow: auto;
- vertical-align: top;
}
-
+optgroup {
+ font-weight: bold;
+}
table {
border-collapse: collapse;
border-spacing: 0;
}
-
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
- * {
- color: #000 !important;
- text-shadow: none !important;
+ *,
+ *:before,
+ *:after {
background: transparent !important;
+ color: #000 !important;
box-shadow: none !important;
+ text-shadow: none !important;
}
a,
a:visited {
@@ -230,9 +201,8 @@ table {
abbr[title]:after {
content: " (" attr(title) ")";
}
- .ir a:after,
- a[href^="javascript:"]:after,
- a[href^="#"]:after {
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
content: "";
}
pre,
@@ -250,9 +220,6 @@ table {
img {
max-width: 100% !important;
}
- @page {
- margin: 2cm .5cm;
- }
p,
h2,
h3 {
@@ -263,13 +230,12 @@ table {
h3 {
page-break-after: avoid;
}
+ select {
+ background: #fff !important;
+ }
.navbar {
display: none;
}
- .table td,
- .table th {
- background-color: #fff !important;
- }
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
@@ -280,2947 +246,2965 @@ table {
.table {
border-collapse: collapse !important;
}
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
-
-*,
-*:before,
-*:after {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('fonts/glyphicons-halflings-regular.eot');
+ src: url('fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('fonts/glyphicons-halflings-regular.woff') format('woff'), url('fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
-
-html {
- font-size: 62.5%;
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
}
-
-body {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- line-height: 1.428571429;
- color: #333333;
- background-color: #ffffff;
+.glyphicon-asterisk:before {
+ content: "\2a";
}
-
-input,
-button,
-select,
-textarea {
- font-family: inherit;
- font-size: inherit;
- line-height: inherit;
+.glyphicon-plus:before {
+ content: "\2b";
}
-
-button,
-input,
-select[multiple],
-textarea {
- background-image: none;
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
}
-
-a {
- color: #428bca;
- text-decoration: none;
+.glyphicon-minus:before {
+ content: "\2212";
}
-
-a:hover,
-a:focus {
- color: #2a6496;
- text-decoration: underline;
+.glyphicon-cloud:before {
+ content: "\2601";
}
-
-a:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+.glyphicon-envelope:before {
+ content: "\2709";
}
-
-img {
- vertical-align: middle;
+.glyphicon-pencil:before {
+ content: "\270f";
}
-
-.img-responsive {
- display: block;
- height: auto;
- max-width: 100%;
+.glyphicon-glass:before {
+ content: "\e001";
}
-
-.img-rounded {
- border-radius: 6px;
+.glyphicon-music:before {
+ content: "\e002";
}
-
-.img-thumbnail {
- display: inline-block;
- height: auto;
- max-width: 100%;
- padding: 4px;
- line-height: 1.428571429;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-radius: 4px;
- -webkit-transition: all 0.2s ease-in-out;
- transition: all 0.2s ease-in-out;
+.glyphicon-search:before {
+ content: "\e003";
}
-
-.img-circle {
- border-radius: 50%;
+.glyphicon-heart:before {
+ content: "\e005";
}
-
-hr {
- margin-top: 20px;
- margin-bottom: 20px;
- border: 0;
- border-top: 1px solid #eeeeee;
+.glyphicon-star:before {
+ content: "\e006";
}
-
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0 0 0 0);
- border: 0;
+.glyphicon-star-empty:before {
+ content: "\e007";
}
-
-p {
- margin: 0 0 10px;
+.glyphicon-user:before {
+ content: "\e008";
}
-
-.lead {
- margin-bottom: 20px;
- font-size: 16.099999999999998px;
- font-weight: 200;
- line-height: 1.4;
+.glyphicon-film:before {
+ content: "\e009";
}
-
-@media (min-width: 768px) {
- .lead {
- font-size: 21px;
- }
+.glyphicon-th-large:before {
+ content: "\e010";
}
-
-small {
- font-size: 85%;
+.glyphicon-th:before {
+ content: "\e011";
}
-
-cite {
- font-style: normal;
+.glyphicon-th-list:before {
+ content: "\e012";
}
-
-.text-muted {
- color: #999999;
+.glyphicon-ok:before {
+ content: "\e013";
}
-
-.text-primary {
- color: #428bca;
+.glyphicon-remove:before {
+ content: "\e014";
}
-
-.text-warning {
- color: #c09853;
+.glyphicon-zoom-in:before {
+ content: "\e015";
}
-
-.text-danger {
- color: #b94a48;
+.glyphicon-zoom-out:before {
+ content: "\e016";
}
-
-.text-success {
- color: #468847;
+.glyphicon-off:before {
+ content: "\e017";
}
-
-.text-info {
- color: #3a87ad;
+.glyphicon-signal:before {
+ content: "\e018";
}
-
-.text-left {
- text-align: left;
+.glyphicon-cog:before {
+ content: "\e019";
}
-
-.text-right {
- text-align: right;
+.glyphicon-trash:before {
+ content: "\e020";
}
-
-.text-center {
- text-align: center;
+.glyphicon-home:before {
+ content: "\e021";
}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-weight: 500;
- line-height: 1.1;
+.glyphicon-file:before {
+ content: "\e022";
}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small {
- font-weight: normal;
- line-height: 1;
- color: #999999;
+.glyphicon-time:before {
+ content: "\e023";
}
-
-h1,
-h2,
-h3 {
- margin-top: 20px;
- margin-bottom: 10px;
+.glyphicon-road:before {
+ content: "\e024";
}
-
-h4,
-h5,
-h6 {
- margin-top: 10px;
- margin-bottom: 10px;
+.glyphicon-download-alt:before {
+ content: "\e025";
}
-
-h1,
-.h1 {
- font-size: 36px;
+.glyphicon-download:before {
+ content: "\e026";
}
-
-h2,
-.h2 {
- font-size: 30px;
+.glyphicon-upload:before {
+ content: "\e027";
}
-
-h3,
-.h3 {
- font-size: 24px;
+.glyphicon-inbox:before {
+ content: "\e028";
}
-
-h4,
-.h4 {
- font-size: 18px;
+.glyphicon-play-circle:before {
+ content: "\e029";
}
-
-h5,
-.h5 {
- font-size: 14px;
+.glyphicon-repeat:before {
+ content: "\e030";
}
-
-h6,
-.h6 {
- font-size: 12px;
+.glyphicon-refresh:before {
+ content: "\e031";
}
-
-h1 small,
-.h1 small {
- font-size: 24px;
+.glyphicon-list-alt:before {
+ content: "\e032";
}
-
-h2 small,
-.h2 small {
- font-size: 18px;
+.glyphicon-lock:before {
+ content: "\e033";
}
-
-h3 small,
-.h3 small,
-h4 small,
-.h4 small {
- font-size: 14px;
+.glyphicon-flag:before {
+ content: "\e034";
}
-
-.page-header {
- padding-bottom: 9px;
- margin: 40px 0 20px;
- border-bottom: 1px solid #eeeeee;
+.glyphicon-headphones:before {
+ content: "\e035";
}
-
-ul,
-ol {
- margin-top: 0;
- margin-bottom: 10px;
+.glyphicon-volume-off:before {
+ content: "\e036";
}
-
-ul ul,
-ol ul,
-ul ol,
-ol ol {
- margin-bottom: 0;
+.glyphicon-volume-down:before {
+ content: "\e037";
}
-
-.list-unstyled {
- padding-left: 0;
- list-style: none;
+.glyphicon-volume-up:before {
+ content: "\e038";
}
-
-.list-inline {
- padding-left: 0;
- list-style: none;
+.glyphicon-qrcode:before {
+ content: "\e039";
}
-
-.list-inline > li {
- display: inline-block;
- padding-right: 5px;
- padding-left: 5px;
+.glyphicon-barcode:before {
+ content: "\e040";
}
-
-dl {
- margin-bottom: 20px;
+.glyphicon-tag:before {
+ content: "\e041";
}
-
-dt,
-dd {
- line-height: 1.428571429;
+.glyphicon-tags:before {
+ content: "\e042";
}
-
-dt {
- font-weight: bold;
+.glyphicon-book:before {
+ content: "\e043";
}
-
-dd {
- margin-left: 0;
+.glyphicon-bookmark:before {
+ content: "\e044";
}
-
-@media (min-width: 768px) {
- .dl-horizontal dt {
- float: left;
- width: 160px;
- overflow: hidden;
- clear: left;
- text-align: right;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .dl-horizontal dd {
- margin-left: 180px;
- }
- .dl-horizontal dd:before,
- .dl-horizontal dd:after {
- display: table;
- content: " ";
- }
- .dl-horizontal dd:after {
- clear: both;
- }
- .dl-horizontal dd:before,
- .dl-horizontal dd:after {
- display: table;
- content: " ";
- }
- .dl-horizontal dd:after {
- clear: both;
- }
+.glyphicon-print:before {
+ content: "\e045";
}
-
-abbr[title],
-abbr[data-original-title] {
- cursor: help;
- border-bottom: 1px dotted #999999;
+.glyphicon-camera:before {
+ content: "\e046";
}
-
-abbr.initialism {
- font-size: 90%;
- text-transform: uppercase;
+.glyphicon-font:before {
+ content: "\e047";
}
-
-blockquote {
- padding: 10px 20px;
- margin: 0 0 20px;
- border-left: 5px solid #eeeeee;
+.glyphicon-bold:before {
+ content: "\e048";
}
-
-blockquote p {
- font-size: 17.5px;
- font-weight: 300;
- line-height: 1.25;
+.glyphicon-italic:before {
+ content: "\e049";
}
-
-blockquote p:last-child {
- margin-bottom: 0;
+.glyphicon-text-height:before {
+ content: "\e050";
}
-
-blockquote small {
- display: block;
- line-height: 1.428571429;
- color: #999999;
+.glyphicon-text-width:before {
+ content: "\e051";
}
-
-blockquote small:before {
- content: '\2014 \00A0';
+.glyphicon-align-left:before {
+ content: "\e052";
}
-
-blockquote.pull-right {
- padding-right: 15px;
- padding-left: 0;
- border-right: 5px solid #eeeeee;
- border-left: 0;
+.glyphicon-align-center:before {
+ content: "\e053";
}
-
-blockquote.pull-right p,
-blockquote.pull-right small {
- text-align: right;
+.glyphicon-align-right:before {
+ content: "\e054";
}
-
-blockquote.pull-right small:before {
- content: '';
+.glyphicon-align-justify:before {
+ content: "\e055";
}
-
-blockquote.pull-right small:after {
- content: '\00A0 \2014';
+.glyphicon-list:before {
+ content: "\e056";
}
-
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
- content: "";
+.glyphicon-indent-left:before {
+ content: "\e057";
}
-
-address {
- display: block;
- margin-bottom: 20px;
- font-style: normal;
- line-height: 1.428571429;
+.glyphicon-indent-right:before {
+ content: "\e058";
}
-
-code,
-pre {
- font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+.glyphicon-facetime-video:before {
+ content: "\e059";
}
-
-code {
- padding: 2px 4px;
- font-size: 90%;
- color: #c7254e;
- white-space: nowrap;
- background-color: #f9f2f4;
- border-radius: 4px;
+.glyphicon-picture:before {
+ content: "\e060";
}
-
-pre {
- display: block;
- padding: 9.5px;
- margin: 0 0 10px;
- font-size: 13px;
- line-height: 1.428571429;
- color: #333333;
- word-break: break-all;
- word-wrap: break-word;
- background-color: #f5f5f5;
- border: 1px solid #cccccc;
- border-radius: 4px;
+.glyphicon-map-marker:before {
+ content: "\e062";
}
-
-pre.prettyprint {
- margin-bottom: 20px;
+.glyphicon-adjust:before {
+ content: "\e063";
}
-
-pre code {
- padding: 0;
- font-size: inherit;
- color: inherit;
- white-space: pre-wrap;
- background-color: transparent;
- border: 0;
+.glyphicon-tint:before {
+ content: "\e064";
}
-
-.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll;
+.glyphicon-edit:before {
+ content: "\e065";
}
-
-.container {
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto;
+.glyphicon-share:before {
+ content: "\e066";
}
-
-.container:before,
-.container:after {
- display: table;
- content: " ";
+.glyphicon-check:before {
+ content: "\e067";
}
-
-.container:after {
- clear: both;
+.glyphicon-move:before {
+ content: "\e068";
}
-
-.container:before,
-.container:after {
- display: table;
- content: " ";
+.glyphicon-step-backward:before {
+ content: "\e069";
}
-
-.container:after {
- clear: both;
+.glyphicon-fast-backward:before {
+ content: "\e070";
}
-
-.row {
- margin-right: -15px;
- margin-left: -15px;
+.glyphicon-backward:before {
+ content: "\e071";
}
-
-.row:before,
-.row:after {
- display: table;
- content: " ";
+.glyphicon-play:before {
+ content: "\e072";
}
-
-.row:after {
- clear: both;
+.glyphicon-pause:before {
+ content: "\e073";
}
-
-.row:before,
-.row:after {
- display: table;
- content: " ";
+.glyphicon-stop:before {
+ content: "\e074";
}
-
-.row:after {
- clear: both;
+.glyphicon-forward:before {
+ content: "\e075";
}
-
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-sm-1,
-.col-sm-2,
-.col-sm-3,
-.col-sm-4,
-.col-sm-5,
-.col-sm-6,
-.col-sm-7,
-.col-sm-8,
-.col-sm-9,
-.col-sm-10,
-.col-sm-11,
-.col-sm-12,
-.col-md-1,
-.col-md-2,
-.col-md-3,
-.col-md-4,
-.col-md-5,
-.col-md-6,
-.col-md-7,
-.col-md-8,
-.col-md-9,
-.col-md-10,
-.col-md-11,
-.col-md-12,
-.col-lg-1,
-.col-lg-2,
-.col-lg-3,
-.col-lg-4,
-.col-lg-5,
-.col-lg-6,
-.col-lg-7,
-.col-lg-8,
-.col-lg-9,
-.col-lg-10,
-.col-lg-11,
-.col-lg-12 {
- position: relative;
- min-height: 1px;
- padding-right: 15px;
- padding-left: 15px;
+.glyphicon-fast-forward:before {
+ content: "\e076";
}
-
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11 {
- float: left;
+.glyphicon-step-forward:before {
+ content: "\e077";
}
-
-.col-xs-1 {
- width: 8.333333333333332%;
+.glyphicon-eject:before {
+ content: "\e078";
}
-
-.col-xs-2 {
- width: 16.666666666666664%;
+.glyphicon-chevron-left:before {
+ content: "\e079";
}
-
-.col-xs-3 {
- width: 25%;
+.glyphicon-chevron-right:before {
+ content: "\e080";
}
-
-.col-xs-4 {
- width: 33.33333333333333%;
+.glyphicon-plus-sign:before {
+ content: "\e081";
}
-
-.col-xs-5 {
- width: 41.66666666666667%;
+.glyphicon-minus-sign:before {
+ content: "\e082";
}
-
-.col-xs-6 {
- width: 50%;
+.glyphicon-remove-sign:before {
+ content: "\e083";
}
-
-.col-xs-7 {
- width: 58.333333333333336%;
+.glyphicon-ok-sign:before {
+ content: "\e084";
}
-
-.col-xs-8 {
- width: 66.66666666666666%;
+.glyphicon-question-sign:before {
+ content: "\e085";
}
-
-.col-xs-9 {
- width: 75%;
+.glyphicon-info-sign:before {
+ content: "\e086";
}
-
-.col-xs-10 {
- width: 83.33333333333334%;
+.glyphicon-screenshot:before {
+ content: "\e087";
}
-
-.col-xs-11 {
- width: 91.66666666666666%;
+.glyphicon-remove-circle:before {
+ content: "\e088";
}
-
-.col-xs-12 {
- width: 100%;
+.glyphicon-ok-circle:before {
+ content: "\e089";
}
-
-@media (min-width: 768px) {
- .container {
- max-width: 750px;
- }
- .col-sm-1,
- .col-sm-2,
- .col-sm-3,
- .col-sm-4,
- .col-sm-5,
- .col-sm-6,
- .col-sm-7,
- .col-sm-8,
- .col-sm-9,
- .col-sm-10,
- .col-sm-11 {
- float: left;
- }
- .col-sm-1 {
- width: 8.333333333333332%;
- }
- .col-sm-2 {
- width: 16.666666666666664%;
- }
- .col-sm-3 {
- width: 25%;
- }
- .col-sm-4 {
- width: 33.33333333333333%;
- }
- .col-sm-5 {
- width: 41.66666666666667%;
- }
- .col-sm-6 {
- width: 50%;
- }
- .col-sm-7 {
- width: 58.333333333333336%;
- }
- .col-sm-8 {
- width: 66.66666666666666%;
- }
- .col-sm-9 {
- width: 75%;
- }
- .col-sm-10 {
- width: 83.33333333333334%;
- }
- .col-sm-11 {
- width: 91.66666666666666%;
- }
- .col-sm-12 {
- width: 100%;
- }
- .col-sm-push-1 {
- left: 8.333333333333332%;
- }
- .col-sm-push-2 {
- left: 16.666666666666664%;
- }
- .col-sm-push-3 {
- left: 25%;
- }
- .col-sm-push-4 {
- left: 33.33333333333333%;
- }
- .col-sm-push-5 {
- left: 41.66666666666667%;
- }
- .col-sm-push-6 {
- left: 50%;
- }
- .col-sm-push-7 {
- left: 58.333333333333336%;
- }
- .col-sm-push-8 {
- left: 66.66666666666666%;
- }
- .col-sm-push-9 {
- left: 75%;
- }
- .col-sm-push-10 {
- left: 83.33333333333334%;
- }
- .col-sm-push-11 {
- left: 91.66666666666666%;
- }
- .col-sm-pull-1 {
- right: 8.333333333333332%;
- }
- .col-sm-pull-2 {
- right: 16.666666666666664%;
- }
- .col-sm-pull-3 {
- right: 25%;
- }
- .col-sm-pull-4 {
- right: 33.33333333333333%;
- }
- .col-sm-pull-5 {
- right: 41.66666666666667%;
- }
- .col-sm-pull-6 {
- right: 50%;
- }
- .col-sm-pull-7 {
- right: 58.333333333333336%;
- }
- .col-sm-pull-8 {
- right: 66.66666666666666%;
- }
- .col-sm-pull-9 {
- right: 75%;
- }
- .col-sm-pull-10 {
- right: 83.33333333333334%;
- }
- .col-sm-pull-11 {
- right: 91.66666666666666%;
- }
- .col-sm-offset-1 {
- margin-left: 8.333333333333332%;
- }
- .col-sm-offset-2 {
- margin-left: 16.666666666666664%;
- }
- .col-sm-offset-3 {
- margin-left: 25%;
- }
- .col-sm-offset-4 {
- margin-left: 33.33333333333333%;
- }
- .col-sm-offset-5 {
- margin-left: 41.66666666666667%;
- }
- .col-sm-offset-6 {
- margin-left: 50%;
- }
- .col-sm-offset-7 {
- margin-left: 58.333333333333336%;
- }
- .col-sm-offset-8 {
- margin-left: 66.66666666666666%;
- }
- .col-sm-offset-9 {
- margin-left: 75%;
- }
- .col-sm-offset-10 {
- margin-left: 83.33333333333334%;
- }
- .col-sm-offset-11 {
- margin-left: 91.66666666666666%;
- }
+.glyphicon-ban-circle:before {
+ content: "\e090";
}
-
-@media (min-width: 992px) {
- .container {
- max-width: 970px;
- }
- .col-md-1,
- .col-md-2,
- .col-md-3,
- .col-md-4,
- .col-md-5,
- .col-md-6,
- .col-md-7,
- .col-md-8,
- .col-md-9,
- .col-md-10,
- .col-md-11 {
- float: left;
- }
- .col-md-1 {
- width: 8.333333333333332%;
- }
- .col-md-2 {
- width: 16.666666666666664%;
- }
- .col-md-3 {
- width: 25%;
- }
- .col-md-4 {
- width: 33.33333333333333%;
- }
- .col-md-5 {
- width: 41.66666666666667%;
- }
- .col-md-6 {
- width: 50%;
- }
- .col-md-7 {
- width: 58.333333333333336%;
- }
- .col-md-8 {
- width: 66.66666666666666%;
- }
- .col-md-9 {
- width: 75%;
- }
- .col-md-10 {
- width: 83.33333333333334%;
- }
- .col-md-11 {
- width: 91.66666666666666%;
- }
- .col-md-12 {
- width: 100%;
- }
- .col-md-push-0 {
- left: auto;
- }
- .col-md-push-1 {
- left: 8.333333333333332%;
- }
- .col-md-push-2 {
- left: 16.666666666666664%;
- }
- .col-md-push-3 {
- left: 25%;
- }
- .col-md-push-4 {
- left: 33.33333333333333%;
- }
- .col-md-push-5 {
- left: 41.66666666666667%;
- }
- .col-md-push-6 {
- left: 50%;
- }
- .col-md-push-7 {
- left: 58.333333333333336%;
- }
- .col-md-push-8 {
- left: 66.66666666666666%;
- }
- .col-md-push-9 {
- left: 75%;
- }
- .col-md-push-10 {
- left: 83.33333333333334%;
- }
- .col-md-push-11 {
- left: 91.66666666666666%;
- }
- .col-md-pull-0 {
- right: auto;
- }
- .col-md-pull-1 {
- right: 8.333333333333332%;
- }
- .col-md-pull-2 {
- right: 16.666666666666664%;
- }
- .col-md-pull-3 {
- right: 25%;
- }
- .col-md-pull-4 {
- right: 33.33333333333333%;
- }
- .col-md-pull-5 {
- right: 41.66666666666667%;
- }
- .col-md-pull-6 {
- right: 50%;
- }
- .col-md-pull-7 {
- right: 58.333333333333336%;
- }
- .col-md-pull-8 {
- right: 66.66666666666666%;
- }
- .col-md-pull-9 {
- right: 75%;
- }
- .col-md-pull-10 {
- right: 83.33333333333334%;
- }
- .col-md-pull-11 {
- right: 91.66666666666666%;
- }
- .col-md-offset-0 {
- margin-left: 0;
- }
- .col-md-offset-1 {
- margin-left: 8.333333333333332%;
- }
- .col-md-offset-2 {
- margin-left: 16.666666666666664%;
- }
- .col-md-offset-3 {
- margin-left: 25%;
- }
- .col-md-offset-4 {
- margin-left: 33.33333333333333%;
- }
- .col-md-offset-5 {
- margin-left: 41.66666666666667%;
- }
- .col-md-offset-6 {
- margin-left: 50%;
- }
- .col-md-offset-7 {
- margin-left: 58.333333333333336%;
- }
- .col-md-offset-8 {
- margin-left: 66.66666666666666%;
- }
- .col-md-offset-9 {
- margin-left: 75%;
- }
- .col-md-offset-10 {
- margin-left: 83.33333333333334%;
- }
- .col-md-offset-11 {
- margin-left: 91.66666666666666%;
- }
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
}
-
-@media (min-width: 1200px) {
- .container {
- max-width: 1170px;
- }
- .col-lg-1,
- .col-lg-2,
- .col-lg-3,
- .col-lg-4,
- .col-lg-5,
- .col-lg-6,
- .col-lg-7,
- .col-lg-8,
- .col-lg-9,
- .col-lg-10,
- .col-lg-11 {
- float: left;
- }
- .col-lg-1 {
- width: 8.333333333333332%;
- }
- .col-lg-2 {
- width: 16.666666666666664%;
- }
- .col-lg-3 {
- width: 25%;
- }
- .col-lg-4 {
- width: 33.33333333333333%;
- }
- .col-lg-5 {
- width: 41.66666666666667%;
- }
- .col-lg-6 {
- width: 50%;
- }
- .col-lg-7 {
- width: 58.333333333333336%;
- }
- .col-lg-8 {
- width: 66.66666666666666%;
- }
- .col-lg-9 {
- width: 75%;
- }
- .col-lg-10 {
- width: 83.33333333333334%;
- }
- .col-lg-11 {
- width: 91.66666666666666%;
- }
- .col-lg-12 {
- width: 100%;
- }
- .col-lg-push-0 {
- left: auto;
- }
- .col-lg-push-1 {
- left: 8.333333333333332%;
- }
- .col-lg-push-2 {
- left: 16.666666666666664%;
- }
- .col-lg-push-3 {
- left: 25%;
- }
- .col-lg-push-4 {
- left: 33.33333333333333%;
- }
- .col-lg-push-5 {
- left: 41.66666666666667%;
- }
- .col-lg-push-6 {
- left: 50%;
- }
- .col-lg-push-7 {
- left: 58.333333333333336%;
- }
- .col-lg-push-8 {
- left: 66.66666666666666%;
- }
- .col-lg-push-9 {
- left: 75%;
- }
- .col-lg-push-10 {
- left: 83.33333333333334%;
- }
- .col-lg-push-11 {
- left: 91.66666666666666%;
- }
- .col-lg-pull-0 {
- right: auto;
- }
- .col-lg-pull-1 {
- right: 8.333333333333332%;
- }
- .col-lg-pull-2 {
- right: 16.666666666666664%;
- }
- .col-lg-pull-3 {
- right: 25%;
- }
- .col-lg-pull-4 {
- right: 33.33333333333333%;
- }
- .col-lg-pull-5 {
- right: 41.66666666666667%;
- }
- .col-lg-pull-6 {
- right: 50%;
- }
- .col-lg-pull-7 {
- right: 58.333333333333336%;
- }
- .col-lg-pull-8 {
- right: 66.66666666666666%;
- }
- .col-lg-pull-9 {
- right: 75%;
- }
- .col-lg-pull-10 {
- right: 83.33333333333334%;
- }
- .col-lg-pull-11 {
- right: 91.66666666666666%;
- }
- .col-lg-offset-0 {
- margin-left: 0;
- }
- .col-lg-offset-1 {
- margin-left: 8.333333333333332%;
- }
- .col-lg-offset-2 {
- margin-left: 16.666666666666664%;
- }
- .col-lg-offset-3 {
- margin-left: 25%;
- }
- .col-lg-offset-4 {
- margin-left: 33.33333333333333%;
- }
- .col-lg-offset-5 {
- margin-left: 41.66666666666667%;
- }
- .col-lg-offset-6 {
- margin-left: 50%;
- }
- .col-lg-offset-7 {
- margin-left: 58.333333333333336%;
- }
- .col-lg-offset-8 {
- margin-left: 66.66666666666666%;
- }
- .col-lg-offset-9 {
- margin-left: 75%;
- }
- .col-lg-offset-10 {
- margin-left: 83.33333333333334%;
- }
- .col-lg-offset-11 {
- margin-left: 91.66666666666666%;
- }
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
}
-
-table {
- max-width: 100%;
- background-color: transparent;
+.glyphicon-unchecked:before {
+ content: "\e157";
}
-
-th {
- text-align: left;
+.glyphicon-expand:before {
+ content: "\e158";
}
-
-.table {
- width: 100%;
- margin-bottom: 20px;
+.glyphicon-collapse-down:before {
+ content: "\e159";
}
-
-.table thead > tr > th,
-.table tbody > tr > th,
-.table tfoot > tr > th,
-.table thead > tr > td,
-.table tbody > tr > td,
-.table tfoot > tr > td {
- padding: 8px;
- line-height: 1.428571429;
- vertical-align: top;
- border-top: 1px solid #dddddd;
+.glyphicon-collapse-up:before {
+ content: "\e160";
}
-
-.table thead > tr > th {
- vertical-align: bottom;
- border-bottom: 2px solid #dddddd;
+.glyphicon-log-in:before {
+ content: "\e161";
}
-
-.table caption + thead tr:first-child th,
-.table colgroup + thead tr:first-child th,
-.table thead:first-child tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child td {
- border-top: 0;
+.glyphicon-flash:before {
+ content: "\e162";
}
-
-.table tbody + tbody {
- border-top: 2px solid #dddddd;
+.glyphicon-log-out:before {
+ content: "\e163";
}
-
-.table .table {
- background-color: #ffffff;
+.glyphicon-new-window:before {
+ content: "\e164";
}
-
-.table-condensed thead > tr > th,
-.table-condensed tbody > tr > th,
-.table-condensed tfoot > tr > th,
-.table-condensed thead > tr > td,
-.table-condensed tbody > tr > td,
-.table-condensed tfoot > tr > td {
- padding: 5px;
+.glyphicon-record:before {
+ content: "\e165";
}
-
-.table-bordered {
- border: 1px solid #dddddd;
+.glyphicon-save:before {
+ content: "\e166";
}
-
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
- border: 1px solid #dddddd;
+.glyphicon-open:before {
+ content: "\e167";
}
-
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
- border-bottom-width: 2px;
+.glyphicon-saved:before {
+ content: "\e168";
}
-
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
- background-color: #f9f9f9;
+.glyphicon-import:before {
+ content: "\e169";
}
-
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
- background-color: #f5f5f5;
+.glyphicon-export:before {
+ content: "\e170";
}
-
-table col[class*="col-"] {
- display: table-column;
- float: none;
+.glyphicon-send:before {
+ content: "\e171";
}
-
-table td[class*="col-"],
-table th[class*="col-"] {
- display: table-cell;
- float: none;
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
}
-
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
- background-color: #f5f5f5;
+.glyphicon-sound-stereo:before {
+ content: "\e189";
}
-
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
- background-color: #dff0d8;
- border-color: #d6e9c6;
+.glyphicon-sound-dolby:before {
+ content: "\e190";
}
-
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td {
- background-color: #d0e9c6;
- border-color: #c9e2b3;
+.glyphicon-sound-5-1:before {
+ content: "\e191";
}
-
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
- background-color: #f2dede;
- border-color: #eed3d7;
+.glyphicon-sound-6-1:before {
+ content: "\e192";
}
-
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td {
- background-color: #ebcccc;
- border-color: #e6c1c7;
+.glyphicon-sound-7-1:before {
+ content: "\e193";
}
-
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
- background-color: #fcf8e3;
- border-color: #fbeed5;
+.glyphicon-copyright-mark:before {
+ content: "\e194";
}
-
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td {
- background-color: #faf2cc;
- border-color: #f8e5be;
+.glyphicon-registration-mark:before {
+ content: "\e195";
}
-
-@media (max-width: 768px) {
- .table-responsive {
- width: 100%;
- margin-bottom: 15px;
- overflow-x: scroll;
- overflow-y: hidden;
- border: 1px solid #dddddd;
- }
- .table-responsive > .table {
- margin-bottom: 0;
- background-color: #fff;
- }
- .table-responsive > .table > thead > tr > th,
- .table-responsive > .table > tbody > tr > th,
- .table-responsive > .table > tfoot > tr > th,
- .table-responsive > .table > thead > tr > td,
- .table-responsive > .table > tbody > tr > td,
- .table-responsive > .table > tfoot > tr > td {
- white-space: nowrap;
- }
- .table-responsive > .table-bordered {
- border: 0;
- }
- .table-responsive > .table-bordered > thead > tr > th:first-child,
- .table-responsive > .table-bordered > tbody > tr > th:first-child,
- .table-responsive > .table-bordered > tfoot > tr > th:first-child,
- .table-responsive > .table-bordered > thead > tr > td:first-child,
- .table-responsive > .table-bordered > tbody > tr > td:first-child,
- .table-responsive > .table-bordered > tfoot > tr > td:first-child {
- border-left: 0;
- }
- .table-responsive > .table-bordered > thead > tr > th:last-child,
- .table-responsive > .table-bordered > tbody > tr > th:last-child,
- .table-responsive > .table-bordered > tfoot > tr > th:last-child,
- .table-responsive > .table-bordered > thead > tr > td:last-child,
- .table-responsive > .table-bordered > tbody > tr > td:last-child,
- .table-responsive > .table-bordered > tfoot > tr > td:last-child {
- border-right: 0;
- }
- .table-responsive > .table-bordered > thead > tr:last-child > th,
- .table-responsive > .table-bordered > tbody > tr:last-child > th,
- .table-responsive > .table-bordered > tfoot > tr:last-child > th,
- .table-responsive > .table-bordered > thead > tr:last-child > td,
- .table-responsive > .table-bordered > tbody > tr:last-child > td,
- .table-responsive > .table-bordered > tfoot > tr:last-child > td {
- border-bottom: 0;
- }
+.glyphicon-cloud-download:before {
+ content: "\e197";
}
-
-fieldset {
- padding: 0;
- margin: 0;
- border: 0;
+.glyphicon-cloud-upload:before {
+ content: "\e198";
}
-
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: 20px;
- font-size: 21px;
- line-height: inherit;
- color: #333333;
- border: 0;
- border-bottom: 1px solid #e5e5e5;
+.glyphicon-tree-conifer:before {
+ content: "\e199";
}
-
-label {
- display: inline-block;
- margin-bottom: 5px;
- font-weight: bold;
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
}
-
-input[type="search"] {
+* {
-webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
-
-input[type="radio"],
-input[type="checkbox"] {
- margin: 4px 0 0;
- margin-top: 1px \9;
- /* IE8-9 */
-
- line-height: normal;
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
-
-input[type="file"] {
- display: block;
+html {
+ font-size: 10px;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
-
-select[multiple],
-select[size] {
- height: auto;
+body {
+ font-family: 'Open Sans', sans-serif;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #333333;
+ background-color: #ffffff;
}
-
-select optgroup {
+input,
+button,
+select,
+textarea {
font-family: inherit;
font-size: inherit;
- font-style: inherit;
+ line-height: inherit;
}
-
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
- outline: thin dotted #333;
+a {
+ color: #428bca;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #1e3756;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
-
-input[type="number"]::-webkit-outer-spin-button,
-input[type="number"]::-webkit-inner-spin-button {
- height: auto;
-}
-
-.form-control:-moz-placeholder {
- color: #999999;
+figure {
+ margin: 0;
}
-
-.form-control::-moz-placeholder {
- color: #999999;
+img {
+ vertical-align: middle;
}
-
-.form-control:-ms-input-placeholder {
- color: #999999;
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
}
-
-.form-control::-webkit-input-placeholder {
- color: #999999;
+.img-rounded {
+ border-radius: 6px;
}
-
-.form-control {
- display: block;
- width: 100%;
- height: 34px;
- padding: 6px 12px;
- font-size: 14px;
- line-height: 1.428571429;
- color: #555555;
- vertical-align: middle;
+.img-thumbnail {
+ padding: 4px;
+ line-height: 1.42857143;
background-color: #ffffff;
- border: 1px solid #cccccc;
+ border: 1px solid #dddddd;
border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
- transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
-}
-
-.form-control:focus {
- border-color: #66afe9;
- outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
-}
-
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
- cursor: not-allowed;
- background-color: #eeeeee;
-}
-
-textarea.form-control {
+ -webkit-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ max-width: 100%;
height: auto;
}
-
-.form-group {
- margin-bottom: 15px;
+.img-circle {
+ border-radius: 50%;
}
-
-.radio,
-.checkbox {
- display: block;
- min-height: 20px;
- padding-left: 20px;
- margin-top: 10px;
- margin-bottom: 10px;
- vertical-align: middle;
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eeeeee;
}
-
-.radio label,
-.checkbox label {
- display: inline;
- margin-bottom: 0;
- font-weight: normal;
- cursor: pointer;
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
}
-
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
- float: left;
- margin-left: -20px;
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
}
-
-.radio + .radio,
-.checkbox + .checkbox {
- margin-top: -5px;
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 400;
+ line-height: 1.1;
+ color: inherit;
}
-
-.radio-inline,
-.checkbox-inline {
- display: inline-block;
- padding-left: 20px;
- margin-bottom: 0;
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
font-weight: normal;
- vertical-align: middle;
- cursor: pointer;
+ line-height: 1;
+ color: #777777;
}
-
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
- margin-top: 0;
- margin-left: 10px;
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-.radio[disabled],
-.radio-inline[disabled],
-.checkbox[disabled],
-.checkbox-inline[disabled],
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"],
-fieldset[disabled] .radio,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox,
-fieldset[disabled] .checkbox-inline {
- cursor: not-allowed;
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
}
-
-.input-sm {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
}
-
-select.input-sm {
- height: 30px;
- line-height: 30px;
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
}
-
-textarea.input-sm {
- height: auto;
+h1,
+.h1 {
+ font-size: 36px;
}
-
-.input-lg {
- height: 45px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.33;
- border-radius: 6px;
+h2,
+.h2 {
+ font-size: 30px;
}
-
-select.input-lg {
- height: 45px;
- line-height: 45px;
+h3,
+.h3 {
+ font-size: 24px;
}
-
-textarea.input-lg {
- height: auto;
+h4,
+.h4 {
+ font-size: 18px;
}
-
-.has-warning .help-block,
-.has-warning .control-label {
- color: #c09853;
+h5,
+.h5 {
+ font-size: 14px;
}
-
-.has-warning .form-control {
- border-color: #c09853;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+h6,
+.h6 {
+ font-size: 12px;
}
-
-.has-warning .form-control:focus {
- border-color: #a47e3c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+p {
+ margin: 0 0 10px;
}
-
-.has-warning .input-group-addon {
- color: #c09853;
- background-color: #fcf8e3;
- border-color: #c09853;
+.lead {
+ margin-bottom: 20px;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 1.4;
}
-
-.has-error .help-block,
-.has-error .control-label {
- color: #b94a48;
+@media (min-width: 768px) {
+ .lead {
+ font-size: 21px;
+ }
}
-
-.has-error .form-control {
- border-color: #b94a48;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+small,
+.small {
+ font-size: 85%;
}
-
-.has-error .form-control:focus {
- border-color: #953b39;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+mark,
+.mark {
+ background-color: #fcf8e3;
+ padding: .2em;
}
-
-.has-error .input-group-addon {
- color: #b94a48;
- background-color: #f2dede;
- border-color: #b94a48;
+.text-left {
+ text-align: left;
}
-
-.has-success .help-block,
-.has-success .control-label {
- color: #468847;
+.text-right {
+ text-align: right;
}
-
-.has-success .form-control {
- border-color: #468847;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+.text-center {
+ text-align: center;
}
-
-.has-success .form-control:focus {
- border-color: #356635;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+.text-justify {
+ text-align: justify;
}
-
-.has-success .input-group-addon {
- color: #468847;
- background-color: #dff0d8;
- border-color: #468847;
+.text-nowrap {
+ white-space: nowrap;
}
-
-.form-control-static {
- padding-top: 7px;
- margin-bottom: 0;
+.text-lowercase {
+ text-transform: lowercase;
}
-
-.help-block {
- display: block;
- margin-top: 5px;
- margin-bottom: 10px;
- color: #737373;
+.text-uppercase {
+ text-transform: uppercase;
}
-
-@media (min-width: 768px) {
- .form-inline .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .form-control {
- display: inline-block;
- }
- .form-inline .radio,
- .form-inline .checkbox {
- display: inline-block;
- padding-left: 0;
- margin-top: 0;
- margin-bottom: 0;
- }
- .form-inline .radio input[type="radio"],
- .form-inline .checkbox input[type="checkbox"] {
- float: none;
- margin-left: 0;
- }
+.text-capitalize {
+ text-transform: capitalize;
}
-
-.form-horizontal .control-label,
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
- padding-top: 7px;
- margin-top: 0;
- margin-bottom: 0;
+.text-muted {
+ color: #777777;
}
-
-.form-horizontal .form-group {
- margin-right: -15px;
- margin-left: -15px;
+.text-primary {
+ color: #428bca;
}
-
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after {
- display: table;
- content: " ";
+a.text-primary:hover {
+ color: #3d8b40;
}
-
-.form-horizontal .form-group:after {
- clear: both;
+.text-success {
+ color: #3c763d;
}
-
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after {
- display: table;
- content: " ";
+a.text-success:hover {
+ color: #2b542c;
}
-
-.form-horizontal .form-group:after {
- clear: both;
+.text-info {
+ color: #31708f;
}
-
-@media (min-width: 768px) {
- .form-horizontal .control-label {
- text-align: right;
- }
+a.text-info:hover {
+ color: #245269;
}
-
-.btn {
- display: inline-block;
- padding: 6px 12px;
- margin-bottom: 0;
- font-size: 14px;
- font-weight: normal;
- line-height: 1.428571429;
- text-align: center;
- white-space: nowrap;
- vertical-align: middle;
- cursor: pointer;
- border: 1px solid transparent;
- border-radius: 4px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- -o-user-select: none;
- user-select: none;
+.text-warning {
+ color: #8a6d3b;
}
-
-.btn:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+a.text-warning:hover {
+ color: #66512c;
}
-
-.btn:hover,
-.btn:focus {
- color: #333333;
- text-decoration: none;
+.text-danger {
+ color: #a94442;
}
-
-.btn:active,
-.btn.active {
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+a.text-danger:hover {
+ color: #843534;
}
-
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
- pointer-events: none;
- cursor: not-allowed;
- opacity: 0.65;
- filter: alpha(opacity=65);
- -webkit-box-shadow: none;
- box-shadow: none;
+.bg-primary {
+ color: #fff;
+ background-color: #428bca;
}
-
-.btn-default {
- color: #333333;
- background-color: #ffffff;
- border-color: #cccccc;
+a.bg-primary:hover {
+ background-color: #3d8b40;
}
-
-.btn-default:hover,
-.btn-default:focus,
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
- color: #333333;
- background-color: #ebebeb;
- border-color: #adadad;
+.bg-success {
+ background-color: #dff0d8;
}
-
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
- background-image: none;
+a.bg-success:hover {
+ background-color: #c1e2b3;
}
-
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
- background-color: #ffffff;
- border-color: #cccccc;
+.bg-info {
+ background-color: #d9edf7;
}
-
-.btn-primary {
- color: #ffffff;
- background-color: #428bca;
- border-color: #357ebd;
+a.bg-info:hover {
+ background-color: #afd9ee;
}
-
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
- color: #ffffff;
- background-color: #3276b1;
- border-color: #285e8e;
+.bg-warning {
+ background-color: #fcf8e3;
}
-
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
- background-image: none;
+a.bg-warning:hover {
+ background-color: #f7ecb5;
}
-
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
- background-color: #428bca;
- border-color: #357ebd;
+.bg-danger {
+ background-color: #f2dede;
}
-
-.btn-warning {
- color: #ffffff;
- background-color: #f0ad4e;
- border-color: #eea236;
+a.bg-danger:hover {
+ background-color: #e4b9b9;
}
-
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
- color: #ffffff;
- background-color: #ed9c28;
- border-color: #d58512;
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eeeeee;
}
-
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
- background-image: none;
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
}
-
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
- background-color: #f0ad4e;
- border-color: #eea236;
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
}
-
-.btn-danger {
- color: #ffffff;
- background-color: #d9534f;
- border-color: #d43f3a;
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
}
-
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
- color: #ffffff;
- background-color: #d2322d;
- border-color: #ac2925;
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+ margin-left: -5px;
}
-
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
- background-image: none;
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
}
-
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
- background-color: #d9534f;
- border-color: #d43f3a;
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
}
-
-.btn-success {
- color: #ffffff;
- background-color: #5cb85c;
- border-color: #4cae4c;
+dt,
+dd {
+ line-height: 1.42857143;
}
-
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
- color: #ffffff;
- background-color: #47a447;
- border-color: #398439;
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
}
-
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
- background-image: none;
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #777777;
}
-
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
- background-color: #5cb85c;
- border-color: #4cae4c;
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
}
-
-.btn-info {
- color: #ffffff;
- background-color: #5bc0de;
- border-color: #46b8da;
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 17.5px;
+ border-left: 5px solid #eeeeee;
}
-
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
- color: #ffffff;
- background-color: #39b3d7;
- border-color: #269abc;
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
}
-
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
- background-image: none;
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.42857143;
+ color: #777777;
}
-
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
- background-color: #5bc0de;
- border-color: #46b8da;
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
}
-
-.btn-link {
- font-weight: normal;
- color: #428bca;
- cursor: pointer;
- border-radius: 0;
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+ text-align: right;
}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
- background-color: transparent;
- -webkit-box-shadow: none;
- box-shadow: none;
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
}
-
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
- border-color: transparent;
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
}
-
-.btn-link:hover,
-.btn-link:focus {
- color: #2a6496;
- text-decoration: underline;
- background-color: transparent;
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.42857143;
}
-
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
- color: #999999;
- text-decoration: none;
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
-
-.btn-lg {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.33;
- border-radius: 6px;
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 4px;
}
-
-.btn-sm,
-.btn-xs {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #ffffff;
+ background-color: #333333;
border-radius: 3px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
-
-.btn-xs {
- padding: 1px 5px;
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ box-shadow: none;
}
-
-.btn-block {
+pre {
display: block;
- width: 100%;
- padding-right: 0;
- padding-left: 0;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #333333;
+ background-color: #f5f5f5;
+ border: 1px solid #cccccc;
+ border-radius: 4px;
}
-
-.btn-block + .btn-block {
- margin-top: 5px;
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
- width: 100%;
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
}
-
-.fade {
- opacity: 0;
- -webkit-transition: opacity 0.15s linear;
- transition: opacity 0.15s linear;
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
}
-
-.fade.in {
- opacity: 1;
+.blog-container {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+ padding-bottom: 30px;
+ padding-top: 30px;
}
-
-.collapse {
- display: none;
+.blog-mainbanner {
+ text-align: center;
}
-
-.collapse.in {
- display: block;
+@media (min-width: 768px) {
+ .container {
+ width: 750px;
+ }
+ .blog-container {
+ padding-left: 40px;
+ padding-right: 40px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 970px;
+ }
}
-.collapsing {
- position: relative;
- height: 0;
- overflow: hidden;
- -webkit-transition: height 0.35s ease;
- transition: height 0.35s ease;
+@media (min-width: 1200px) {
+ .container {
+ width: 1250px;
+ }
+ .blog-container {
+ padding-left: 135px;
+ padding-right: 135px;
+ }
+
}
-@font-face {
- font-family: 'Glyphicons Halflings';
- src: url('../fonts/glyphicons-halflings-regular.eot');
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
+@media (min-width: 1500px) {
+ .container {
+ width: 1250px;
+ }
+ .blog-container {
+ padding-left: 300px;
+ padding-right: 300px;
+ }
}
-.glyphicon {
+.container-fluid {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.row {
+ margin-left: -15px;
+ margin-right: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- -webkit-font-smoothing: antialiased;
- font-style: normal;
- font-weight: normal;
- line-height: 1;
+ min-height: 1px;
+ padding-left: 15px;
+ padding-right: 15px;
}
-
-.glyphicon-asterisk:before {
- content: "\2a";
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
}
-
-.glyphicon-plus:before {
- content: "\2b";
+.col-xs-12 {
+ width: 100%;
}
-
-.glyphicon-euro:before {
- content: "\20ac";
+.col-xs-11 {
+ width: 91.66666667%;
+}
+.col-xs-10 {
+ width: 83.33333333%;
}
-
-.glyphicon-minus:before {
- content: "\2212";
+.col-xs-9 {
+ width: 75%;
}
-
-.glyphicon-cloud:before {
- content: "\2601";
+.col-xs-8 {
+ width: 66.66666667%;
}
-
-.glyphicon-envelope:before {
- content: "\2709";
+.col-xs-7 {
+ width: 58.33333333%;
}
-
-.glyphicon-pencil:before {
- content: "\270f";
+.col-xs-6 {
+ width: 50%;
}
-
-.glyphicon-glass:before {
- content: "\e001";
+.col-xs-5 {
+ width: 41.66666667%;
}
-
-.glyphicon-music:before {
- content: "\e002";
+.col-xs-4 {
+ width: 33.33333333%;
}
-
-.glyphicon-search:before {
- content: "\e003";
+.col-xs-3 {
+ width: 25%;
}
-
-.glyphicon-heart:before {
- content: "\e005";
+.col-xs-2 {
+ width: 16.66666667%;
}
-
-.glyphicon-star:before {
- content: "\e006";
+.col-xs-1 {
+ width: 8.33333333%;
}
-
-.glyphicon-star-empty:before {
- content: "\e007";
+.col-xs-pull-12 {
+ right: 100%;
}
-
-.glyphicon-user:before {
- content: "\e008";
+.col-xs-pull-11 {
+ right: 91.66666667%;
}
-
-.glyphicon-film:before {
- content: "\e009";
+.col-xs-pull-10 {
+ right: 83.33333333%;
}
-
-.glyphicon-th-large:before {
- content: "\e010";
+.col-xs-pull-9 {
+ right: 75%;
}
-
-.glyphicon-th:before {
- content: "\e011";
+.col-xs-pull-8 {
+ right: 66.66666667%;
}
-
-.glyphicon-th-list:before {
- content: "\e012";
+.col-xs-pull-7 {
+ right: 58.33333333%;
}
-
-.glyphicon-ok:before {
- content: "\e013";
+.col-xs-pull-6 {
+ right: 50%;
}
-
-.glyphicon-remove:before {
- content: "\e014";
+.col-xs-pull-5 {
+ right: 41.66666667%;
}
-
-.glyphicon-zoom-in:before {
- content: "\e015";
+.col-xs-pull-4 {
+ right: 33.33333333%;
}
-
-.glyphicon-zoom-out:before {
- content: "\e016";
+.col-xs-pull-3 {
+ right: 25%;
}
-
-.glyphicon-off:before {
- content: "\e017";
+.col-xs-pull-2 {
+ right: 16.66666667%;
}
-
-.glyphicon-signal:before {
- content: "\e018";
+.col-xs-pull-1 {
+ right: 8.33333333%;
}
-
-.glyphicon-cog:before {
- content: "\e019";
+.col-xs-pull-0 {
+ right: auto;
}
-
-.glyphicon-trash:before {
- content: "\e020";
+.col-xs-push-12 {
+ left: 100%;
}
-
-.glyphicon-home:before {
- content: "\e021";
+.col-xs-push-11 {
+ left: 91.66666667%;
}
-
-.glyphicon-file:before {
- content: "\e022";
+.col-xs-push-10 {
+ left: 83.33333333%;
}
-
-.glyphicon-time:before {
- content: "\e023";
+.col-xs-push-9 {
+ left: 75%;
}
-
-.glyphicon-road:before {
- content: "\e024";
+.col-xs-push-8 {
+ left: 66.66666667%;
}
-
-.glyphicon-download-alt:before {
- content: "\e025";
+.col-xs-push-7 {
+ left: 58.33333333%;
}
-
-.glyphicon-download:before {
- content: "\e026";
+.col-xs-push-6 {
+ left: 50%;
}
-
-.glyphicon-upload:before {
- content: "\e027";
+.col-xs-push-5 {
+ left: 41.66666667%;
}
-
-.glyphicon-inbox:before {
- content: "\e028";
+.col-xs-push-4 {
+ left: 33.33333333%;
}
-
-.glyphicon-play-circle:before {
- content: "\e029";
+.col-xs-push-3 {
+ left: 25%;
}
-
-.glyphicon-repeat:before {
- content: "\e030";
+.col-xs-push-2 {
+ left: 16.66666667%;
}
-
-.glyphicon-refresh:before {
- content: "\e031";
+.col-xs-push-1 {
+ left: 8.33333333%;
}
-
-.glyphicon-list-alt:before {
- content: "\e032";
+.col-xs-push-0 {
+ left: auto;
}
-
-.glyphicon-flag:before {
- content: "\e034";
+.col-xs-offset-12 {
+ margin-left: 100%;
}
-
-.glyphicon-headphones:before {
- content: "\e035";
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
}
-
-.glyphicon-volume-off:before {
- content: "\e036";
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
}
-
-.glyphicon-volume-down:before {
- content: "\e037";
+.col-xs-offset-9 {
+ margin-left: 75%;
}
-
-.glyphicon-volume-up:before {
- content: "\e038";
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
}
-
-.glyphicon-qrcode:before {
- content: "\e039";
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
}
-
-.glyphicon-barcode:before {
- content: "\e040";
+.col-xs-offset-6 {
+ margin-left: 50%;
}
-
-.glyphicon-tag:before {
- content: "\e041";
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
}
-
-.glyphicon-tags:before {
- content: "\e042";
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
}
-
-.glyphicon-book:before {
- content: "\e043";
+.col-xs-offset-3 {
+ margin-left: 25%;
}
-
-.glyphicon-print:before {
- content: "\e045";
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
}
-
-.glyphicon-font:before {
- content: "\e047";
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
}
-
-.glyphicon-bold:before {
- content: "\e048";
+.col-xs-offset-0 {
+ margin-left: 0%;
}
-
-.glyphicon-italic:before {
- content: "\e049";
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0%;
+ }
}
-
-.glyphicon-text-height:before {
- content: "\e050";
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0%;
+ }
}
-
-.glyphicon-text-width:before {
- content: "\e051";
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0%;
+ }
}
-
-.glyphicon-align-left:before {
- content: "\e052";
+table {
+ background-color: transparent;
}
-
-.glyphicon-align-center:before {
- content: "\e053";
+caption {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ color: #777777;
+ text-align: left;
}
-
-.glyphicon-align-right:before {
- content: "\e054";
+th {
+ text-align: left;
}
-
-.glyphicon-align-justify:before {
- content: "\e055";
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
}
-
-.glyphicon-list:before {
- content: "\e056";
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.42857143;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
}
-
-.glyphicon-indent-left:before {
- content: "\e057";
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #dddddd;
}
-
-.glyphicon-indent-right:before {
- content: "\e058";
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
}
-
-.glyphicon-facetime-video:before {
- content: "\e059";
+.table > tbody + tbody {
+ border-top: 2px solid #dddddd;
}
-
-.glyphicon-picture:before {
- content: "\e060";
+.table .table {
+ background-color: #ffffff;
}
-
-.glyphicon-map-marker:before {
- content: "\e062";
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
}
-
-.glyphicon-adjust:before {
- content: "\e063";
+.table-bordered {
+ border: 1px solid #dddddd;
}
-
-.glyphicon-tint:before {
- content: "\e064";
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #dddddd;
}
-
-.glyphicon-edit:before {
- content: "\e065";
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
}
-
-.glyphicon-share:before {
- content: "\e066";
+.table-striped > tbody > tr:nth-child(odd) {
+ background-color: #f9f9f9;
}
-
-.glyphicon-check:before {
- content: "\e067";
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
}
-
-.glyphicon-move:before {
- content: "\e068";
+table col[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-column;
}
-
-.glyphicon-step-backward:before {
- content: "\e069";
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-cell;
}
-
-.glyphicon-fast-backward:before {
- content: "\e070";
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #f5f5f5;
}
-
-.glyphicon-backward:before {
- content: "\e071";
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #e8e8e8;
}
-
-.glyphicon-play:before {
- content: "\e072";
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
}
-
-.glyphicon-pause:before {
- content: "\e073";
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
}
-
-.glyphicon-stop:before {
- content: "\e074";
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
}
-
-.glyphicon-forward:before {
- content: "\e075";
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
}
-
-.glyphicon-fast-forward:before {
- content: "\e076";
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
}
-
-.glyphicon-step-forward:before {
- content: "\e077";
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
}
-
-.glyphicon-eject:before {
- content: "\e078";
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
}
-
-.glyphicon-chevron-left:before {
- content: "\e079";
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
}
-
-.glyphicon-chevron-right:before {
- content: "\e080";
+.table-responsive {
+ overflow-x: auto;
+ min-height: 0.01%;
}
-
-.glyphicon-plus-sign:before {
- content: "\e081";
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #dddddd;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
}
-
-.glyphicon-minus-sign:before {
- content: "\e082";
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ min-width: 0;
}
-
-.glyphicon-remove-sign:before {
- content: "\e083";
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
}
-
-.glyphicon-ok-sign:before {
- content: "\e084";
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
}
-
-.glyphicon-question-sign:before {
- content: "\e085";
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
-
-.glyphicon-info-sign:before {
- content: "\e086";
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
}
-
-.glyphicon-screenshot:before {
- content: "\e087";
+input[type="file"] {
+ display: block;
}
-
-.glyphicon-remove-circle:before {
- content: "\e088";
+input[type="range"] {
+ display: block;
+ width: 100%;
}
-
-.glyphicon-ok-circle:before {
- content: "\e089";
+select[multiple],
+select[size] {
+ height: auto;
}
-
-.glyphicon-ban-circle:before {
- content: "\e090";
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
-
-.glyphicon-arrow-left:before {
- content: "\e091";
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555555;
}
-
-.glyphicon-arrow-right:before {
- content: "\e092";
+.form-control {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555555;
+ background-color: #ffffff;
+ background-image: none;
+ border: 1px solid #cccccc;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
-
-.glyphicon-arrow-up:before {
- content: "\e093";
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
-
-.glyphicon-arrow-down:before {
- content: "\e094";
+.form-control::-moz-placeholder {
+ color: #999999;
+ opacity: 1;
}
-
-.glyphicon-share-alt:before {
- content: "\e095";
+.form-control:-ms-input-placeholder {
+ color: #999999;
}
-
-.glyphicon-resize-full:before {
- content: "\e096";
+.form-control::-webkit-input-placeholder {
+ color: #999999;
}
-
-.glyphicon-resize-small:before {
- content: "\e097";
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+ background-color: #eeeeee;
+ opacity: 1;
}
-
-.glyphicon-exclamation-sign:before {
- content: "\e101";
+textarea.form-control {
+ height: auto;
}
-
-.glyphicon-gift:before {
- content: "\e102";
+input[type="search"] {
+ -webkit-appearance: none;
}
-
-.glyphicon-leaf:before {
- content: "\e103";
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"],
+ input[type="time"],
+ input[type="datetime-local"],
+ input[type="month"] {
+ line-height: 34px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm {
+ line-height: 30px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg {
+ line-height: 46px;
+ }
}
-
-.glyphicon-eye-open:before {
- content: "\e105";
+.form-group {
+ margin-bottom: 15px;
}
-
-.glyphicon-eye-close:before {
- content: "\e106";
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
}
-
-.glyphicon-warning-sign:before {
- content: "\e107";
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
}
-
-.glyphicon-plane:before {
- content: "\e108";
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-left: -20px;
+ margin-top: 4px \9;
}
-
-.glyphicon-random:before {
- content: "\e110";
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
}
-
-.glyphicon-comment:before {
- content: "\e111";
+.radio-inline,
+.checkbox-inline {
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
}
-
-.glyphicon-magnet:before {
- content: "\e112";
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
}
-
-.glyphicon-chevron-up:before {
- content: "\e113";
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
}
-
-.glyphicon-chevron-down:before {
- content: "\e114";
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
}
-
-.glyphicon-retweet:before {
- content: "\e115";
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
}
-
-.glyphicon-shopping-cart:before {
- content: "\e116";
+.form-control-static {
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
}
-
-.glyphicon-folder-close:before {
- content: "\e117";
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-left: 0;
+ padding-right: 0;
}
-
-.glyphicon-folder-open:before {
- content: "\e118";
+.input-sm,
+.form-group-sm .form-control {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
}
-
-.glyphicon-resize-vertical:before {
- content: "\e119";
+select.input-sm,
+select.form-group-sm .form-control {
+ height: 30px;
+ line-height: 30px;
}
-
-.glyphicon-resize-horizontal:before {
- content: "\e120";
+textarea.input-sm,
+textarea.form-group-sm .form-control,
+select[multiple].input-sm,
+select[multiple].form-group-sm .form-control {
+ height: auto;
}
-
-.glyphicon-hdd:before {
- content: "\e121";
+.input-lg,
+.form-group-lg .form-control {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
}
-
-.glyphicon-bullhorn:before {
- content: "\e122";
+select.input-lg,
+select.form-group-lg .form-control {
+ height: 46px;
+ line-height: 46px;
}
-
-.glyphicon-certificate:before {
- content: "\e124";
+textarea.input-lg,
+textarea.form-group-lg .form-control,
+select[multiple].input-lg,
+select[multiple].form-group-lg .form-control {
+ height: auto;
}
-
-.glyphicon-thumbs-up:before {
- content: "\e125";
+.has-feedback {
+ position: relative;
}
-
-.glyphicon-thumbs-down:before {
- content: "\e126";
+.has-feedback .form-control {
+ padding-right: 42.5px;
}
-
-.glyphicon-hand-right:before {
- content: "\e127";
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
}
-
-.glyphicon-hand-left:before {
- content: "\e128";
+.input-lg + .form-control-feedback {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+.input-sm + .form-control-feedback {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
}
-
-.glyphicon-hand-up:before {
- content: "\e129";
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
}
-
-.glyphicon-hand-down:before {
- content: "\e130";
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
-
-.glyphicon-circle-arrow-right:before {
- content: "\e131";
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
-
-.glyphicon-circle-arrow-left:before {
- content: "\e132";
+.has-success .input-group-addon {
+ color: #3c763d;
+ border-color: #3c763d;
+ background-color: #dff0d8;
}
-
-.glyphicon-circle-arrow-up:before {
- content: "\e133";
+.has-success .form-control-feedback {
+ color: #3c763d;
}
-
-.glyphicon-circle-arrow-down:before {
- content: "\e134";
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #8a6d3b;
}
-
-.glyphicon-globe:before {
- content: "\e135";
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
-
-.glyphicon-tasks:before {
- content: "\e137";
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
-
-.glyphicon-filter:before {
- content: "\e138";
+.has-warning .input-group-addon {
+ color: #8a6d3b;
+ border-color: #8a6d3b;
+ background-color: #fcf8e3;
}
-
-.glyphicon-fullscreen:before {
- content: "\e140";
+.has-warning .form-control-feedback {
+ color: #8a6d3b;
}
-
-.glyphicon-dashboard:before {
- content: "\e141";
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
}
-
-.glyphicon-heart-empty:before {
- content: "\e143";
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
-
-.glyphicon-link:before {
- content: "\e144";
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
-
-.glyphicon-phone:before {
- content: "\e145";
+.has-error .input-group-addon {
+ color: #a94442;
+ border-color: #a94442;
+ background-color: #f2dede;
}
-
-.glyphicon-usd:before {
- content: "\e148";
+.has-error .form-control-feedback {
+ color: #a94442;
}
-
-.glyphicon-gbp:before {
- content: "\e149";
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
}
-
-.glyphicon-sort:before {
- content: "\e150";
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
}
-
-.glyphicon-sort-by-alphabet:before {
- content: "\e151";
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
}
-
-.glyphicon-sort-by-alphabet-alt:before {
- content: "\e152";
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
}
-
-.glyphicon-sort-by-order:before {
- content: "\e153";
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 7px;
}
-
-.glyphicon-sort-by-order-alt:before {
- content: "\e154";
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 27px;
}
-
-.glyphicon-sort-by-attributes:before {
- content: "\e155";
+.form-horizontal .form-group {
+ margin-left: -15px;
+ margin-right: -15px;
}
-
-.glyphicon-sort-by-attributes-alt:before {
- content: "\e156";
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ margin-bottom: 0;
+ padding-top: 7px;
+ }
}
-
-.glyphicon-unchecked:before {
- content: "\e157";
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 15px;
}
-
-.glyphicon-expand:before {
- content: "\e158";
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 14.3px;
+ }
}
-
-.glyphicon-collapse-down:before {
- content: "\e159";
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ }
}
-
-.glyphicon-collapse-up:before {
- content: "\e160";
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: normal;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ border-radius: 4px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
-
-.glyphicon-log-in:before {
- content: "\e161";
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #4d5258;
+ text-decoration: none;
}
-
-.glyphicon-flash:before {
- content: "\e162";
+.btn:active,
+.btn.active {
+ outline: 0;
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
-
-.glyphicon-log-out:before {
- content: "\e163";
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ pointer-events: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
}
-
-.glyphicon-new-window:before {
- content: "\e164";
+.btn-default {
+ color: #4d5258;
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
}
-
-.glyphicon-record:before {
- content: "\e165";
+.btn-default:hover,
+.btn-default:focus,
+.btn-default.focus,
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #4d5258;
+ background-color: #d5d5d5;
+ border-color: #989898;
}
-
-.glyphicon-save:before {
- content: "\e166";
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
}
-
-.glyphicon-open:before {
- content: "\e167";
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #eeeeee;
+ border-color: #b7b7b7;
}
-
-.glyphicon-saved:before {
- content: "\e168";
+.btn-default .badge {
+ color: #eeeeee;
+ background-color: #4d5258;
}
-
-.glyphicon-import:before {
- content: "\e169";
+.btn-primary {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #449d48;
}
-
-.glyphicon-export:before {
- content: "\e170";
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary.focus,
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #ffffff;
+ background-color: #3d8b40;
+ border-color: #327334;
}
-
-.glyphicon-send:before {
- content: "\e171";
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
}
-
-.glyphicon-floppy-disk:before {
- content: "\e172";
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #428bca;
+ border-color: #449d48;
}
-
-.glyphicon-floppy-saved:before {
- content: "\e173";
+.btn-primary .badge {
+ color: #428bca;
+ background-color: #ffffff;
}
-
-.glyphicon-floppy-remove:before {
- content: "\e174";
+.btn-success {
+ color: #ffffff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
}
-
-.glyphicon-floppy-save:before {
- content: "\e175";
+.btn-success:hover,
+.btn-success:focus,
+.btn-success.focus,
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #ffffff;
+ background-color: #449d44;
+ border-color: #398439;
}
-
-.glyphicon-floppy-open:before {
- content: "\e176";
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
}
-
-.glyphicon-credit-card:before {
- content: "\e177";
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
}
-
-.glyphicon-transfer:before {
- content: "\e178";
+.btn-success .badge {
+ color: #5cb85c;
+ background-color: #ffffff;
}
-
-.glyphicon-cutlery:before {
- content: "\e179";
+.btn-info {
+ color: #ffffff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
}
-
-.glyphicon-header:before {
- content: "\e180";
+.btn-info:hover,
+.btn-info:focus,
+.btn-info.focus,
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #ffffff;
+ background-color: #31b0d5;
+ border-color: #269abc;
}
-
-.glyphicon-compressed:before {
- content: "\e181";
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
}
-
-.glyphicon-earphone:before {
- content: "\e182";
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #46b8da;
}
-
-.glyphicon-phone-alt:before {
- content: "\e183";
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #ffffff;
}
-
-.glyphicon-tower:before {
- content: "\e184";
+.btn-warning {
+ color: #ffffff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
}
-
-.glyphicon-stats:before {
- content: "\e185";
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning.focus,
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #ffffff;
+ background-color: #ec971f;
+ border-color: #d58512;
}
-
-.glyphicon-sd-video:before {
- content: "\e186";
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
}
-
-.glyphicon-hd-video:before {
- content: "\e187";
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
}
-
-.glyphicon-subtitles:before {
- content: "\e188";
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #ffffff;
}
-
-.glyphicon-sound-stereo:before {
- content: "\e189";
+.btn-danger {
+ color: #ffffff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
}
-
-.glyphicon-sound-dolby:before {
- content: "\e190";
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger.focus,
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #ffffff;
+ background-color: #c9302c;
+ border-color: #ac2925;
}
-
-.glyphicon-sound-5-1:before {
- content: "\e191";
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
}
-
-.glyphicon-sound-6-1:before {
- content: "\e192";
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d43f3a;
}
-
-.glyphicon-sound-7-1:before {
- content: "\e193";
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #ffffff;
}
-
-.glyphicon-copyright-mark:before {
- content: "\e194";
+.btn-link {
+ color: #428bca;
+ font-weight: normal;
+ border-radius: 0;
}
-
-.glyphicon-registration-mark:before {
- content: "\e195";
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
}
-
-.glyphicon-cloud-download:before {
- content: "\e197";
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
}
-
-.glyphicon-cloud-upload:before {
- content: "\e198";
+.btn-link:hover,
+.btn-link:focus {
+ color: #1e3756;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #777777;
+ text-decoration: none;
}
-
-.glyphicon-tree-conifer:before {
- content: "\e199";
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.33;
+ border-radius: 6px;
}
-
-.glyphicon-tree-deciduous:before {
- content: "\e200";
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
}
-
-.glyphicon-briefcase:before {
- content: "\1f4bc";
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
}
-
-.glyphicon-calendar:before {
- content: "\1f4c5";
+.btn-block {
+ display: block;
+ width: 100%;
}
-
-.glyphicon-pushpin:before {
- content: "\1f4cc";
+.btn-block + .btn-block {
+ margin-top: 5px;
}
-
-.glyphicon-paperclip:before {
- content: "\1f4ce";
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
}
-
-.glyphicon-camera:before {
- content: "\1f4f7";
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
}
-
-.glyphicon-lock:before {
- content: "\1f512";
+.fade.in {
+ opacity: 1;
}
-
-.glyphicon-bell:before {
- content: "\1f514";
+.collapse {
+ display: none;
+ visibility: hidden;
}
-
-.glyphicon-bookmark:before {
- content: "\1f516";
+.collapse.in {
+ display: block;
+ visibility: visible;
}
-
-.glyphicon-fire:before {
- content: "\1f525";
+tr.collapse.in {
+ display: table-row;
}
-
-.glyphicon-wrench:before {
- content: "\1f527";
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-property: height, visibility;
+ transition-property: height, visibility;
+ -webkit-transition-duration: 0.35s;
+ transition-duration: 0.35s;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
}
-
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
- border-top: 4px solid #000000;
+ border-top: 4px solid;
border-right: 4px solid transparent;
- border-bottom: 0 dotted;
border-left: 4px solid transparent;
- content: "";
}
-
.dropdown {
position: relative;
}
-
.dropdown-toggle:focus {
outline: 0;
}
-
.dropdown-menu {
position: absolute;
top: 100%;
@@ -3231,143 +3215,160 @@ input[type="button"].btn-block {
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
- font-size: 14px;
list-style: none;
+ font-size: 14px;
+ text-align: left;
background-color: #ffffff;
border: 1px solid #cccccc;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 4px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
background-clip: padding-box;
}
-
.dropdown-menu.pull-right {
right: 0;
left: auto;
}
-
.dropdown-menu .divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
-
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
- line-height: 1.428571429;
- color: #333333;
+ line-height: 1.42857143;
+ color: #999999;
white-space: nowrap;
}
-
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
- color: #ffffff;
text-decoration: none;
- background-color: #428bca;
+ color: #428bca;
+ background-color: #eeeeee;
}
-
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: #ffffff;
text-decoration: none;
- background-color: #428bca;
outline: 0;
+ background-color: #428bca;
}
-
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
- color: #999999;
+ color: #777777;
}
-
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none;
- cursor: not-allowed;
background-color: transparent;
background-image: none;
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ cursor: not-allowed;
}
-
.open > .dropdown-menu {
display: block;
}
-
.open > a {
outline: 0;
}
-
+.dropdown-menu-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
- line-height: 1.428571429;
- color: #999999;
+ line-height: 1.42857143;
+ color: #777777;
+ white-space: nowrap;
}
-
.dropdown-backdrop {
position: fixed;
- top: 0;
+ left: 0;
right: 0;
bottom: 0;
- left: 0;
+ top: 0;
z-index: 990;
}
-
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
-
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
- border-top: 0 dotted;
- border-bottom: 4px solid #000000;
+ border-top: 0;
+ border-bottom: 4px solid;
content: "";
}
-
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
top: auto;
bottom: 100%;
margin-bottom: 1px;
}
-
@media (min-width: 768px) {
.navbar-right .dropdown-menu {
- right: 0;
left: auto;
+ right: 0;
+ }
+ .navbar-right .dropdown-menu-left {
+ left: 0;
+ right: auto;
}
}
-.btn-default .caret {
- border-top-color: #333333;
+.dropdown-submenu {
+ position:relative;
}
-
-.btn-primary .caret,
-.btn-success .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret {
- border-top-color: #fff;
+.dropdown-submenu>.dropdown-menu {
+ top:0;
+ left:100%;
+ margin-top:-6px;
+ margin-left:-1px;
+ -webkit-border-radius:0 6px 6px 6px;
+ -moz-border-radius:0 6px 6px 6px;
+ border-radius:0 6px 6px 6px;
}
-
-.dropup .btn-default .caret {
- border-bottom-color: #333333;
+.dropdown-submenu:hover>.dropdown-menu {
+ display:block;
}
-
-.dropup .btn-primary .caret,
-.dropup .btn-success .caret,
-.dropup .btn-warning .caret,
-.dropup .btn-danger .caret,
-.dropup .btn-info .caret {
- border-bottom-color: #fff;
+.dropdown-submenu>a:after {
+ display:block;
+ content:" ";
+ float:right;
+ width:0;
+ height:0;
+ border-color:transparent;
+ border-style:solid;
+ border-width:5px 0 5px 5px;
+ border-left-color:#cccccc;
+ margin-top:5px;
+ margin-right:-10px;
+}
+.dropdown-submenu:hover>a:after {
+ border-left-color:#ffffff;
+}
+.dropdown-submenu.pull-left {
+ float:none;
+}
+.dropdown-submenu.pull-left>.dropdown-menu {
+ left:-100%;
+ margin-left:10px;
+ -webkit-border-radius:6px 0 6px 6px;
+ -moz-border-radius:6px 0 6px 6px;
+ border-radius:6px 0 6px 6px;
}
.btn-group,
@@ -3376,13 +3377,11 @@ input[type="button"].btn-block {
display: inline-block;
vertical-align: middle;
}
-
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
float: left;
}
-
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
@@ -3393,175 +3392,95 @@ input[type="button"].btn-block {
.btn-group-vertical > .btn.active {
z-index: 2;
}
-
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
- outline: none;
-}
-
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
margin-left: -1px;
}
-
-.btn-toolbar:before,
-.btn-toolbar:after {
- display: table;
- content: " ";
-}
-
-.btn-toolbar:after {
- clear: both;
-}
-
-.btn-toolbar:before,
-.btn-toolbar:after {
- display: table;
- content: " ";
-}
-
-.btn-toolbar:after {
- clear: both;
+.btn-toolbar {
+ margin-left: -5px;
}
-
-.btn-toolbar .btn-group {
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
float: left;
}
-
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group,
-.btn-toolbar > .btn-group + .btn-group {
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
margin-left: 5px;
}
-
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
border-radius: 0;
}
-
.btn-group > .btn:first-child {
margin-left: 0;
}
-
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius: 0;
border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
}
-
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
-
.btn-group > .btn-group {
float: left;
}
-
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
-
.btn-group > .btn-group:first-child > .btn:last-child,
.btn-group > .btn-group:first-child > .dropdown-toggle {
- border-top-right-radius: 0;
border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
}
-
.btn-group > .btn-group:last-child > .btn:first-child {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
-
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
outline: 0;
}
-
-.btn-group-xs > .btn {
- padding: 5px 10px;
- padding: 1px 5px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-
-.btn-group-sm > .btn {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-
-.btn-group-lg > .btn {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.33;
- border-radius: 6px;
-}
-
.btn-group > .btn + .dropdown-toggle {
- padding-right: 8px;
padding-left: 8px;
+ padding-right: 8px;
}
-
.btn-group > .btn-lg + .dropdown-toggle {
- padding-right: 12px;
padding-left: 12px;
+ padding-right: 12px;
}
-
.btn-group.open .dropdown-toggle {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
}
-
.btn .caret {
margin-left: 0;
}
-
.btn-lg .caret {
border-width: 5px 5px 0;
border-bottom-width: 0;
}
-
.dropup .btn-lg .caret {
border-width: 0 5px 5px;
}
-
.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group {
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
display: block;
float: none;
width: 100%;
max-width: 100%;
}
-
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after {
- display: table;
- content: " ";
-}
-
-.btn-group-vertical > .btn-group:after {
- clear: both;
-}
-
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after {
- display: table;
- content: " ";
-}
-
-.btn-group-vertical > .btn-group:after {
- clear: both;
-}
-
.btn-group-vertical > .btn-group > .btn {
float: none;
}
-
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
@@ -3569,96 +3488,97 @@ input[type="button"].btn-block {
margin-top: -1px;
margin-left: 0;
}
-
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
border-radius: 0;
}
-
.btn-group-vertical > .btn:first-child:not(:last-child) {
border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-
.btn-group-vertical > .btn:last-child:not(:first-child) {
- border-top-right-radius: 0;
border-bottom-left-radius: 4px;
+ border-top-right-radius: 0;
border-top-left-radius: 0;
}
-
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
-
-.btn-group-vertical > .btn-group:first-child > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-
-.btn-group-vertical > .btn-group:last-child > .btn:first-child {
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
-
.btn-group-justified {
display: table;
width: 100%;
- border-collapse: separate;
table-layout: fixed;
+ border-collapse: separate;
}
-
-.btn-group-justified .btn {
- display: table-cell;
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
float: none;
+ display: table-cell;
width: 1%;
}
-
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
- display: none;
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
}
-
.input-group {
position: relative;
display: table;
border-collapse: separate;
}
-
-.input-group.col {
+.input-group[class*="col-"] {
float: none;
- padding-right: 0;
padding-left: 0;
+ padding-right: 0;
}
-
.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
width: 100%;
margin-bottom: 0;
}
-
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
- height: 45px;
+ height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.33;
border-radius: 6px;
}
-
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
- height: 45px;
- line-height: 45px;
+ height: 46px;
+ line-height: 46px;
}
-
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn {
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
height: auto;
}
-
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
@@ -3668,3138 +3588,3667 @@ textarea.input-group-lg > .input-group-btn > .btn {
line-height: 1.5;
border-radius: 3px;
}
-
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
height: 30px;
line-height: 30px;
}
-
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn {
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
height: auto;
}
-
.input-group-addon,
.input-group-btn,
.input-group .form-control {
display: table-cell;
}
-
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
border-radius: 0;
}
-
.input-group-addon,
.input-group-btn {
width: 1%;
white-space: nowrap;
vertical-align: middle;
}
-
.input-group-addon {
padding: 6px 12px;
font-size: 14px;
font-weight: normal;
line-height: 1;
+ color: #555555;
text-align: center;
background-color: #eeeeee;
border: 1px solid #cccccc;
border-radius: 4px;
}
-
.input-group-addon.input-sm {
padding: 5px 10px;
font-size: 12px;
border-radius: 3px;
}
-
.input-group-addon.input-lg {
padding: 10px 16px;
font-size: 18px;
border-radius: 6px;
}
-
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
margin-top: 0;
}
-
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius: 0;
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
}
-
.input-group-addon:first-child {
border-right: 0;
}
-
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child) {
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
-
-.input-group-addon:last-child {
- border-left: 0;
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ margin-left: -1px;
+}
+.nav {
+ margin-bottom: 0;
+ padding-left: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+#toc .nav > li > a {
+ padding: 0px 0px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.nav > li.disabled > a {
+ color: #777777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #777777;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: not-allowed;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eeeeee;
+ border-color: #428bca;
+}
+.nav .nav-divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #dddddd;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.42857143;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #555555;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #dddddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #dddddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 4px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #ffffff;
+ background-color: #428bca;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #dddddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #dddddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #ffffff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+ visibility: hidden;
+}
+.tab-content > .active {
+ display: block;
+ visibility: visible;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 66px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 4px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ overflow-x: visible;
+ padding-right: 15px;
+ padding-left: 15px;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ visibility: visible !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
}
-
-.input-group-btn {
- position: relative;
- white-space: nowrap;
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
}
-
-.input-group-btn > .btn {
- position: relative;
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
}
-
-.input-group-btn > .btn + .btn {
- margin-left: -4px;
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
}
-
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:active {
- z-index: 2;
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
}
-
-.nav {
- padding-left: 0;
+.navbar-fixed-bottom {
+ bottom: 0;
margin-bottom: 0;
- list-style: none;
+ border-width: 1px 0 0;
}
-
-.nav:before,
-.nav:after {
- display: table;
- content: " ";
+.navbar-brand {
+ float: left;
+ padding: 23px 15px;
+ font-size: 18px;
+ line-height: 20px;
+ height: 66px;
}
-
-.nav:after {
- clear: both;
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
}
-
-.nav:before,
-.nav:after {
- display: table;
- content: " ";
+.navbar-brand > img {
+ display: block;
}
-
-.nav:after {
- clear: both;
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -15px;
+ }
}
-
-.nav > li {
+.navbar-toggle {
position: relative;
- display: block;
+ float: right;
+ margin-right: 15px;
+ padding: 9px 10px;
+ margin-top: 16px;
+ margin-bottom: 16px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
}
-
-.nav > li > a {
- position: relative;
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
display: block;
- padding: 10px 15px;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
}
-
-.nav > li > a:hover,
-.nav > li > a:focus {
- text-decoration: none;
- background-color: #eeeeee;
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
}
-
-.nav > li.disabled > a {
- color: #999999;
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
}
-
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
- color: #999999;
- text-decoration: none;
- cursor: not-allowed;
- background-color: transparent;
+.navbar-nav {
+ margin: 11.5px -15px;
}
-
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
- background-color: #eeeeee;
- border-color: #428bca;
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
}
-
-.nav .nav-divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5;
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
}
-
-.nav > li > a > img {
- max-width: none;
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 23px;
+ padding-bottom: 23px;
+ }
}
-
-.nav-tabs {
- border-bottom: 1px solid #dddddd;
+.navbar-form {
+ margin-left: -15px;
+ margin-right: -15px;
+ padding: 10px 15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin-top: 16px;
+ margin-bottom: 16px;
}
-
-.nav-tabs > li {
- float: left;
- margin-bottom: -1px;
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
}
-
-.nav-tabs > li > a {
- margin-right: 2px;
- line-height: 1.428571429;
- border: 1px solid transparent;
- border-radius: 4px 4px 0 0;
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
}
-
-.nav-tabs > li > a:hover {
- border-color: #eeeeee #eeeeee #dddddd;
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
}
-
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
- color: #555555;
- cursor: default;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-bottom-color: transparent;
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 16px;
+ margin-bottom: 16px;
}
-
-.nav-tabs.nav-justified {
- width: 100%;
- border-bottom: 0;
+.navbar-btn.btn-sm {
+ margin-top: 18px;
+ margin-bottom: 18px;
}
-
-.nav-tabs.nav-justified > li {
- float: none;
+.navbar-btn.btn-xs {
+ margin-top: 22px;
+ margin-bottom: 22px;
}
-
-.nav-tabs.nav-justified > li > a {
- text-align: center;
+.navbar-text {
+ margin-top: 23px;
+ margin-bottom: 23px;
}
-
@media (min-width: 768px) {
- .nav-tabs.nav-justified > li {
- display: table-cell;
- width: 1%;
+ .navbar-text {
+ float: left;
+ margin-left: 15px;
+ margin-right: 15px;
}
}
-
-.nav-tabs.nav-justified > li > a {
- margin-right: 0;
- border-bottom: 1px solid #dddddd;
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ }
+ .navbar-right {
+ float: right !important;
+ margin-right: -15px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
}
-
-.nav-tabs.nav-justified > .active > a {
- border-bottom-color: #ffffff;
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
}
-
-.nav-pills > li {
- float: left;
+.navbar-default .navbar-brand {
+ color: #777777;
}
-
-.nav-pills > li > a {
- border-radius: 5px;
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
}
-
-.nav-pills > li + li {
- margin-left: 2px;
+.navbar-default .navbar-text {
+ color: #777777;
}
-
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
- color: #ffffff;
- background-color: #428bca;
+.navbar-default .navbar-nav > li > a {
+ color: #777777;
}
-
-.nav-stacked > li {
- float: none;
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333333;
+ background-color: transparent;
}
-
-.nav-stacked > li + li {
- margin-top: 2px;
- margin-left: 0;
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
}
-
-.nav-justified {
- width: 100%;
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
}
-
-.nav-justified > li {
- float: none;
+.navbar-default .navbar-toggle {
+ border-color: #dddddd;
}
-
-.nav-justified > li > a {
- text-align: center;
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #dddddd;
}
-
-@media (min-width: 768px) {
- .nav-justified > li {
- display: table-cell;
- width: 1%;
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ background-color: #e7e7e7;
+ color: #555555;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
}
}
-
-.nav-tabs-justified {
- border-bottom: 0;
+.navbar-default .navbar-link {
+ color: #777777;
}
-
-.nav-tabs-justified > li > a {
- margin-right: 0;
- border-bottom: 1px solid #dddddd;
+.navbar-default .navbar-link:hover {
+ color: #333333;
}
-
-.nav-tabs-justified > .active > a {
- border-bottom-color: #ffffff;
+.navbar-default .btn-link {
+ color: #777777;
}
-
-.tabbable:before,
-.tabbable:after {
- display: table;
- content: " ";
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333333;
}
-
-.tabbable:after {
- clear: both;
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #cccccc;
}
-
-.tabbable:before,
-.tabbable:after {
- display: table;
- content: " ";
+.navbar-inverse {
+ background-color: #222222;
+ border-color: #080808;
}
-
-.tabbable:after {
- clear: both;
+.navbar-inverse .navbar-brand {
+ color: #9d9d9d;
}
-
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
- display: none;
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
}
-
-.tab-content > .active,
-.pill-content > .active {
- display: block;
+.navbar-inverse .navbar-text {
+ color: #9d9d9d;
}
-
-.nav .caret {
- border-top-color: #428bca;
- border-bottom-color: #428bca;
+.navbar-inverse .navbar-nav > li > a {
+ color: #9d9d9d;
}
-
-.nav a:hover .caret {
- border-top-color: #2a6496;
- border-bottom-color: #2a6496;
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
}
-
-.nav-tabs .dropdown-menu {
- margin-top: -1px;
- border-top-right-radius: 0;
- border-top-left-radius: 0;
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
}
-
-.navbar {
- position: relative;
- z-index: 1000;
- min-height: 50px;
- margin-bottom: 20px;
- border: 1px solid transparent;
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
}
-
-.navbar:before,
-.navbar:after {
- display: table;
- content: " ";
+.navbar-inverse .navbar-toggle {
+ border-color: #333333;
}
-
-.navbar:after {
- clear: both;
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333333;
}
-
-.navbar:before,
-.navbar:after {
- display: table;
- content: " ";
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ background-color: #080808;
+ color: #ffffff;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #9d9d9d;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+ }
}
-
-.navbar:after {
- clear: both;
+.navbar-inverse .navbar-link {
+ color: #9d9d9d;
}
-
-@media (min-width: 768px) {
- .navbar {
- border-radius: 4px;
- }
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
}
-
-.navbar-header:before,
-.navbar-header:after {
- display: table;
- content: " ";
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
}
-
-.navbar-header:after {
- clear: both;
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #ffffff;
}
-
-.navbar-header:before,
-.navbar-header:after {
- display: table;
- content: " ";
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444444;
}
-
-.navbar-header:after {
- clear: both;
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 4px;
}
-
-@media (min-width: 768px) {
- .navbar-header {
- float: left;
- }
+.breadcrumb > li {
+ display: inline-block;
}
-
-.navbar-collapse {
- max-height: 340px;
- padding-right: 15px;
- padding-left: 15px;
- overflow-x: visible;
- border-top: 1px solid transparent;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
- -webkit-overflow-scrolling: touch;
+.breadcrumb > li + li:before {
+ content: "/\00a0";
+ padding: 0 5px;
+ color: #cccccc;
}
-
-.navbar-collapse:before,
-.navbar-collapse:after {
- display: table;
- content: " ";
+.breadcrumb > .active {
+ color: #777777;
}
-
-.navbar-collapse:after {
- clear: both;
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
}
-
-.navbar-collapse:before,
-.navbar-collapse:after {
- display: table;
- content: " ";
+.pagination > li {
+ display: inline;
}
-
-.navbar-collapse:after {
- clear: both;
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ line-height: 1.42857143;
+ text-decoration: none;
+ color: #428bca;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ margin-left: -1px;
}
-
-.navbar-collapse.in {
- overflow-y: auto;
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 4px;
+ border-top-left-radius: 4px;
}
-
-@media (min-width: 768px) {
- .navbar-collapse {
- width: auto;
- border-top: 0;
- box-shadow: none;
- }
- .navbar-collapse.collapse {
- display: block !important;
- height: auto !important;
- padding-bottom: 0;
- overflow: visible !important;
- }
- .navbar-collapse.in {
- overflow-y: visible;
- }
- .navbar-collapse .navbar-nav.navbar-left:first-child {
- margin-left: -15px;
- }
- .navbar-collapse .navbar-nav.navbar-right:last-child {
- margin-right: -15px;
- }
- .navbar-collapse .navbar-text:last-child {
- margin-right: 0;
- }
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-bottom-right-radius: 4px;
+ border-top-right-radius: 4px;
}
-
-.container > .navbar-header,
-.container > .navbar-collapse {
- margin-right: -15px;
- margin-left: -15px;
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ color: #1e3756;
+ background-color: #eeeeee;
+ border-color: #dddddd;
}
-
-@media (min-width: 768px) {
- .container > .navbar-header,
- .container > .navbar-collapse {
- margin-right: 0;
- margin-left: 0;
- }
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #428bca;
+ cursor: default;
}
-
-.navbar-static-top {
- border-width: 0 0 1px;
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #777777;
+ background-color: #ffffff;
+ border-color: #dddddd;
+ cursor: not-allowed;
}
-
-@media (min-width: 768px) {
- .navbar-static-top {
- border-radius: 0;
- }
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 10px 16px;
+ font-size: 18px;
}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- position: fixed;
- right: 0;
- left: 0;
- border-width: 0 0 1px;
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 6px;
+ border-top-left-radius: 6px;
}
-
-@media (min-width: 768px) {
- .navbar-fixed-top,
- .navbar-fixed-bottom {
- border-radius: 0;
- }
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 6px;
+ border-top-right-radius: 6px;
}
-
-.navbar-fixed-top {
- top: 0;
- z-index: 1030;
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 12px;
}
-
-.navbar-fixed-bottom {
- bottom: 0;
- margin-bottom: 0;
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px;
}
-
-.navbar-brand {
- float: left;
- padding: 15px 15px;
- font-size: 18px;
- line-height: 20px;
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
}
-
-.navbar-brand:hover,
-.navbar-brand:focus {
- text-decoration: none;
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ list-style: none;
+ text-align: center;
}
-
-@media (min-width: 768px) {
- .navbar > .container .navbar-brand {
- margin-left: -15px;
- }
+.pager li {
+ display: inline;
}
-
-.navbar-toggle {
- position: relative;
- float: right;
- padding: 9px 10px;
- margin-top: 8px;
- margin-right: 15px;
- margin-bottom: 8px;
- background-color: transparent;
- border: 1px solid transparent;
- border-radius: 4px;
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 15px;
}
-
-.navbar-toggle .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- border-radius: 1px;
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
}
-
-.navbar-toggle .icon-bar + .icon-bar {
- margin-top: 4px;
+.pager .next > a,
+.pager .next > span {
+ float: right;
}
-
-@media (min-width: 768px) {
- .navbar-toggle {
- display: none;
- }
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
}
-
-.navbar-nav {
- margin: 7.5px -15px;
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #777777;
+ background-color: #ffffff;
+ cursor: not-allowed;
}
-
-.navbar-nav > li > a {
- padding-top: 10px;
- padding-bottom: 10px;
- line-height: 20px;
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
}
-
-@media (max-width: 767px) {
- .navbar-nav .open .dropdown-menu {
- position: static;
- float: none;
- width: auto;
- margin-top: 0;
- background-color: transparent;
- border: 0;
- box-shadow: none;
- }
- .navbar-nav .open .dropdown-menu > li > a,
- .navbar-nav .open .dropdown-menu .dropdown-header {
- padding: 5px 15px 5px 25px;
- }
- .navbar-nav .open .dropdown-menu > li > a {
- line-height: 20px;
- }
- .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-nav .open .dropdown-menu > li > a:focus {
- background-image: none;
- }
+a.label:hover,
+a.label:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
}
-
-@media (min-width: 768px) {
- .navbar-nav {
- float: left;
- margin: 0;
- }
- .navbar-nav > li {
- float: left;
- }
- .navbar-nav > li > a {
- padding-top: 15px;
- padding-bottom: 15px;
- }
+.label:empty {
+ display: none;
}
-
-@media (min-width: 768px) {
- .navbar-left {
- float: left !important;
- }
- .navbar-right {
- float: right !important;
- }
+.btn .label {
+ position: relative;
+ top: -1px;
}
-
-.navbar-form {
- padding: 10px 15px;
- margin-top: 8px;
- margin-right: -15px;
- margin-bottom: 8px;
- margin-left: -15px;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+.label-default {
+ background-color: #777777;
}
-
-@media (min-width: 768px) {
- .navbar-form .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .form-control {
- display: inline-block;
- }
- .navbar-form .radio,
- .navbar-form .checkbox {
- display: inline-block;
- padding-left: 0;
- margin-top: 0;
- margin-bottom: 0;
- }
- .navbar-form .radio input[type="radio"],
- .navbar-form .checkbox input[type="checkbox"] {
- float: none;
- margin-left: 0;
- }
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #5e5e5e;
}
-
-@media (max-width: 767px) {
- .navbar-form .form-group {
- margin-bottom: 5px;
- }
+.label-primary {
+ background-color: #428bca;
}
-
-@media (min-width: 768px) {
- .navbar-form {
- width: auto;
- padding-top: 0;
- padding-bottom: 0;
- margin-right: 0;
- margin-left: 0;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- }
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #3d8b40;
}
-
-.navbar-nav > li > .dropdown-menu {
- margin-top: 0;
- border-top-right-radius: 0;
- border-top-left-radius: 0;
+.label-success {
+ background-color: #5cb85c;
}
-
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #449d44;
}
-
-.navbar-nav.pull-right > li > .dropdown-menu,
-.navbar-nav > li > .dropdown-menu.pull-right {
- right: 0;
- left: auto;
+.label-info {
+ background-color: #5bc0de;
}
-
-.navbar-btn {
- margin-top: 8px;
- margin-bottom: 8px;
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
}
-
-.navbar-text {
- float: left;
- margin-top: 15px;
- margin-bottom: 15px;
+.label-warning {
+ background-color: #f0ad4e;
}
-
-@media (min-width: 768px) {
- .navbar-text {
- margin-right: 15px;
- margin-left: 15px;
- }
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
}
-
-.navbar-default {
- background-color: #f8f8f8;
- border-color: #e7e7e7;
+.label-danger {
+ background-color: #d9534f;
}
-
-.navbar-default .navbar-brand {
- color: #777777;
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
}
-
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
- color: #5e5e5e;
- background-color: transparent;
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: bold;
+ color: #ffffff;
+ line-height: 1;
+ vertical-align: baseline;
+ white-space: nowrap;
+ text-align: center;
+ background-color: #777777;
+ border-radius: 10px;
}
-
-.navbar-default .navbar-text {
- color: #777777;
+.badge:empty {
+ display: none;
}
-
-.navbar-default .navbar-nav > li > a {
- color: #777777;
+.btn .badge {
+ position: relative;
+ top: -1px;
}
-
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
- color: #333333;
- background-color: transparent;
+.btn-xs .badge {
+ top: 0;
+ padding: 1px 5px;
}
-
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
- color: #555555;
- background-color: #e7e7e7;
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
}
-
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
- color: #cccccc;
- background-color: transparent;
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #428bca;
+ background-color: #ffffff;
}
-
-.navbar-default .navbar-toggle {
- border-color: #dddddd;
+.list-group-item > .badge {
+ float: right;
}
-
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
- background-color: #dddddd;
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
}
-
-.navbar-default .navbar-toggle .icon-bar {
- background-color: #cccccc;
+.jumbotron {
+ padding: 30px 15px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eeeeee;
}
-
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
- border-color: #e6e6e6;
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
}
-
-.navbar-default .navbar-nav > .dropdown > a:hover .caret,
-.navbar-default .navbar-nav > .dropdown > a:focus .caret {
- border-top-color: #333333;
- border-bottom-color: #333333;
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 21px;
+ font-weight: 200;
}
-
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
- color: #555555;
- background-color: #e7e7e7;
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
}
-
-.navbar-default .navbar-nav > .open > a .caret,
-.navbar-default .navbar-nav > .open > a:hover .caret,
-.navbar-default .navbar-nav > .open > a:focus .caret {
- border-top-color: #555555;
- border-bottom-color: #555555;
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 6px;
}
-
-.navbar-default .navbar-nav > .dropdown > a .caret {
- border-top-color: #777777;
- border-bottom-color: #777777;
+.jumbotron .container {
+ max-width: 100%;
}
-
-@media (max-width: 767px) {
- .navbar-default .navbar-nav .open .dropdown-menu > li > a {
- color: #777777;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
- color: #333333;
- background-color: transparent;
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding: 48px 0;
}
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
- color: #555555;
- background-color: #e7e7e7;
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
}
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
- color: #cccccc;
- background-color: transparent;
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 63px;
}
}
-
-.navbar-default .navbar-link {
- color: #777777;
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.42857143;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 4px;
+ -webkit-transition: border 0.2s ease-in-out;
+ -o-transition: border 0.2s ease-in-out;
+ transition: border 0.2s ease-in-out;
}
-
-.navbar-default .navbar-link:hover {
+.thumbnail > img,
+.thumbnail a > img {
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #428bca;
+}
+.thumbnail .caption {
+ padding: 9px;
color: #333333;
}
-
-.navbar-inverse {
- background-color: #222222;
- border-color: #080808;
+.alert {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
}
-
-.navbar-inverse .navbar-brand {
- color: #999999;
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
}
-
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
- color: #ffffff;
- background-color: transparent;
+.alert .alert-link {
+ font-weight: bold;
}
-
-.navbar-inverse .navbar-text {
- color: #999999;
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
}
-
-.navbar-inverse .navbar-nav > li > a {
- color: #999999;
+.alert > p + p {
+ margin-top: 5px;
}
-
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
- color: #ffffff;
- background-color: transparent;
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 35px;
}
-
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
- color: #ffffff;
- background-color: #080808;
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
}
-
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
- color: #444444;
- background-color: transparent;
+.alert-success {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #3c763d;
}
-
-.navbar-inverse .navbar-toggle {
- border-color: #333333;
+.alert-success hr {
+ border-top-color: #c9e2b3;
}
-
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
- background-color: #333333;
+.alert-success .alert-link {
+ color: #2b542c;
}
-
-.navbar-inverse .navbar-toggle .icon-bar {
- background-color: #ffffff;
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #31708f;
}
-
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
- border-color: #101010;
+.alert-info hr {
+ border-top-color: #a6e1ec;
}
-
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
- color: #ffffff;
- background-color: #080808;
+.alert-info .alert-link {
+ color: #245269;
}
-
-.navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
- border-top-color: #ffffff;
- border-bottom-color: #ffffff;
+.alert-warning {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #8a6d3b;
}
-
-.navbar-inverse .navbar-nav > .dropdown > a .caret {
- border-top-color: #999999;
- border-bottom-color: #999999;
+.alert-warning hr {
+ border-top-color: #f7e1b5;
}
-
-.navbar-inverse .navbar-nav > .open > a .caret,
-.navbar-inverse .navbar-nav > .open > a:hover .caret,
-.navbar-inverse .navbar-nav > .open > a:focus .caret {
- border-top-color: #ffffff;
- border-bottom-color: #ffffff;
+.alert-warning .alert-link {
+ color: #66512c;
}
-
-@media (max-width: 767px) {
- .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
- border-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
- color: #999999;
+.alert-danger {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #a94442;
+}
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+ color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
}
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
- color: #ffffff;
- background-color: transparent;
+ to {
+ background-position: 0 0;
}
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
- color: #ffffff;
- background-color: #080808;
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
}
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
- color: #444444;
- background-color: transparent;
+ to {
+ background-position: 0 0;
}
}
-
-.navbar-inverse .navbar-link {
- color: #999999;
+.progress {
+ overflow: hidden;
+ height: 20px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 12px;
+ line-height: 20px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #428bca;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
-
-.navbar-inverse .navbar-link:hover {
- color: #ffffff;
+.media {
+ margin-top: 15px;
}
-
-.breadcrumb {
- padding: 8px 15px;
- margin-bottom: 20px;
- list-style: none;
- background-color: #f5f5f5;
- border-radius: 4px;
+.media:first-child {
+ margin-top: 0;
}
-
-.breadcrumb > li {
- display: inline-block;
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
}
-
-.breadcrumb > li + li:before {
- padding: 0 5px;
- color: #cccccc;
- content: "/\00a0";
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
}
-
-.breadcrumb > .active {
- color: #999999;
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
}
-
-.pagination {
- display: inline-block;
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.media-list {
padding-left: 0;
- margin: 20px 0;
- border-radius: 4px;
+ list-style: none;
}
-
-.pagination > li {
- display: inline;
+.list-group {
+ margin-bottom: 20px;
+ padding-left: 0;
}
-
-.pagination > li > a,
-.pagination > li > span {
+.list-group-item {
position: relative;
- float: left;
- padding: 6px 12px;
- margin-left: -1px;
- line-height: 1.428571429;
- text-decoration: none;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
background-color: #ffffff;
border: 1px solid #dddddd;
}
-
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
- margin-left: 0;
- border-bottom-left-radius: 4px;
+.list-group-item:first-child {
+ border-top-right-radius: 4px;
border-top-left-radius: 4px;
}
-
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
- border-top-right-radius: 4px;
+.list-group-item:last-child {
+ margin-bottom: 0;
border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
}
-
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
+a.list-group-item {
+ color: #555555;
+}
+a.list-group-item .list-group-item-heading {
+ color: #333333;
+}
+a.list-group-item:hover,
+a.list-group-item:focus {
+ text-decoration: none;
+ color: #555555;
+ background-color: #f5f5f5;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
background-color: #eeeeee;
+ color: #777777;
+ cursor: not-allowed;
}
-
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #777777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
z-index: 2;
color: #ffffff;
- cursor: default;
background-color: #428bca;
border-color: #428bca;
}
-
-.pagination > .disabled > span,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
- color: #999999;
- cursor: not-allowed;
- background-color: #ffffff;
- border-color: #dddddd;
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
}
-
-.pagination-lg > li > a,
-.pagination-lg > li > span {
- padding: 10px 16px;
- font-size: 18px;
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #d9eeda;
}
-
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
- border-bottom-left-radius: 6px;
- border-top-left-radius: 6px;
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
}
-
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
- border-top-right-radius: 6px;
- border-bottom-right-radius: 6px;
+a.list-group-item-success {
+ color: #3c763d;
}
-
-.pagination-sm > li > a,
-.pagination-sm > li > span {
- padding: 5px 10px;
- font-size: 12px;
+a.list-group-item-success .list-group-item-heading {
+ color: inherit;
}
-
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
- border-bottom-left-radius: 3px;
- border-top-left-radius: 3px;
+a.list-group-item-success:hover,
+a.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
}
-
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
- border-top-right-radius: 3px;
- border-bottom-right-radius: 3px;
+a.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
}
-
-.pager {
- padding-left: 0;
- margin: 20px 0;
- text-align: center;
- list-style: none;
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
}
-
-.pager:before,
-.pager:after {
- display: table;
- content: " ";
+a.list-group-item-info {
+ color: #31708f;
}
-
-.pager:after {
- clear: both;
+a.list-group-item-info .list-group-item-heading {
+ color: inherit;
}
-
-.pager:before,
-.pager:after {
- display: table;
- content: " ";
+a.list-group-item-info:hover,
+a.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
}
-
-.pager:after {
- clear: both;
+a.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
}
-
-.pager li {
- display: inline;
+.list-group-item-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
}
-
-.pager li > a,
-.pager li > span {
- display: inline-block;
- padding: 5px 14px;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-radius: 15px;
+a.list-group-item-warning {
+ color: #8a6d3b;
}
-
-.pager li > a:hover,
-.pager li > a:focus {
- text-decoration: none;
- background-color: #eeeeee;
+a.list-group-item-warning .list-group-item-heading {
+ color: inherit;
}
-
-.pager .next > a,
-.pager .next > span {
- float: right;
+a.list-group-item-warning:hover,
+a.list-group-item-warning:focus {
+ color: #8a6d3b;
+ background-color: #faf2cc;
}
-
-.pager .previous > a,
-.pager .previous > span {
- float: left;
+a.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #8a6d3b;
+ border-color: #8a6d3b;
}
-
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
- color: #999999;
- cursor: not-allowed;
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+a.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover,
+a.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 20px;
background-color: #ffffff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 16px;
+ color: inherit;
}
-
-.label {
- display: inline;
- padding: .2em .6em .3em;
- font-size: 75%;
- font-weight: bold;
- line-height: 1;
- color: #ffffff;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- border-radius: .25em;
+.panel-title > a {
+ color: inherit;
}
-
-.label[href]:hover,
-.label[href]:focus {
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #dddddd;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
}
-
-.label:empty {
- display: none;
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
}
-
-.label-default {
- background-color: #999999;
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
}
-
-.label-default[href]:hover,
-.label-default[href]:focus {
- background-color: #808080;
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
}
-
-.label-primary {
- background-color: #428bca;
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
}
-
-.label-primary[href]:hover,
-.label-primary[href]:focus {
- background-color: #3071a9;
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
}
-
-.label-success {
- background-color: #5cb85c;
+.list-group + .panel-footer {
+ border-top-width: 0;
}
-
-.label-success[href]:hover,
-.label-success[href]:focus {
- background-color: #449d44;
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
}
-
-.label-info {
- background-color: #5bc0de;
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-left: 15px;
+ padding-right: 15px;
}
-
-.label-info[href]:hover,
-.label-info[href]:focus {
- background-color: #31b0d5;
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
}
-
-.label-warning {
- background-color: #f0ad4e;
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
}
-
-.label-warning[href]:hover,
-.label-warning[href]:focus {
- background-color: #ec971f;
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 3px;
}
-
-.label-danger {
- background-color: #d9534f;
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 3px;
}
-
-.label-danger[href]:hover,
-.label-danger[href]:focus {
- background-color: #c9302c;
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
}
-
-.badge {
- display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: bold;
- line-height: 1;
- color: #ffffff;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- background-color: #999999;
- border-radius: 10px;
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
}
-
-.badge:empty {
- display: none;
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 3px;
}
-
-a.badge:hover,
-a.badge:focus {
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 3px;
}
-
-.btn .badge {
- position: relative;
- top: -1px;
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #dddddd;
}
-
-a.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
- color: #428bca;
- background-color: #ffffff;
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
}
-
-.nav-pills > li > a > .badge {
- margin-left: 3px;
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
}
-
-.jumbotron {
- padding: 30px;
- margin-bottom: 30px;
- font-size: 21px;
- font-weight: 200;
- line-height: 2.1428571435;
- color: inherit;
- background-color: #eeeeee;
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
}
-
-.jumbotron h1 {
- line-height: 1;
- color: inherit;
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
}
-
-.jumbotron p {
- line-height: 1.4;
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
}
-
-.container .jumbotron {
- border-radius: 6px;
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
}
-
-@media screen and (min-width: 768px) {
- .jumbotron {
- padding-top: 48px;
- padding-bottom: 48px;
- }
- .container .jumbotron {
- padding-right: 60px;
- padding-left: 60px;
- }
- .jumbotron h1 {
- font-size: 63px;
- }
+.panel > .table-responsive {
+ border: 0;
+ margin-bottom: 0;
}
-
-.thumbnail {
- display: inline-block;
- display: block;
- height: auto;
- max-width: 100%;
- padding: 4px;
- line-height: 1.428571429;
- background-color: #ffffff;
- border: 1px solid #dddddd;
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
border-radius: 4px;
- -webkit-transition: all 0.2s ease-in-out;
- transition: all 0.2s ease-in-out;
}
-
-.thumbnail > img {
- display: block;
- height: auto;
- max-width: 100%;
+.panel-group .panel + .panel {
+ margin-top: 5px;
}
-
-a.thumbnail:hover,
-a.thumbnail:focus {
- border-color: #428bca;
+.panel-group .panel-heading {
+ border-bottom: 0;
}
-
-.thumbnail > img {
- margin-right: auto;
- margin-left: auto;
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #dddddd;
}
-
-.thumbnail .caption {
- padding: 9px;
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #dddddd;
+}
+.panel-default {
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading {
color: #333333;
+ background-color: #f5f5f5;
+ border-color: #dddddd;
}
-
-.alert {
- padding: 15px;
- margin-bottom: 20px;
- border: 1px solid transparent;
- border-radius: 4px;
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #dddddd;
}
-
-.alert h4 {
- margin-top: 0;
- color: inherit;
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333333;
}
-
-.alert .alert-link {
- font-weight: bold;
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #dddddd;
}
-
-.alert > p,
-.alert > ul {
- margin-bottom: 0;
+.panel-primary {
+ border-color: #428bca;
}
-
-.alert > p + p {
- margin-top: 5px;
+.panel-primary > .panel-heading {
+ color: #ffffff;
+ background-color: #428bca;
+ border-color: #428bca;
}
-
-.alert-dismissable {
- padding-right: 35px;
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #428bca;
}
-
-.alert-dismissable .close {
- position: relative;
- top: -2px;
- right: -21px;
- color: inherit;
+.panel-primary > .panel-heading .badge {
+ color: #428bca;
+ background-color: #ffffff;
}
-
-.alert-success {
- color: #468847;
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #428bca;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
-
-.alert-success hr {
- border-top-color: #c9e2b3;
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #d6e9c6;
}
-
-.alert-success .alert-link {
- color: #356635;
+.panel-info {
+ border-color: #bce8f1;
}
-
-.alert-info {
- color: #3a87ad;
+.panel-info > .panel-heading {
+ color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
-
-.alert-info hr {
- border-top-color: #a6e1ec;
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #bce8f1;
}
-
-.alert-info .alert-link {
- color: #2d6987;
+.panel-info > .panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f;
}
-
-.alert-warning {
- color: #c09853;
- background-color: #fcf8e3;
- border-color: #fbeed5;
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #bce8f1;
}
-
-.alert-warning hr {
- border-top-color: #f8e5be;
+.panel-warning {
+ border-color: #faebcc;
}
-
-.alert-warning .alert-link {
- color: #a47e3c;
+.panel-warning > .panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
}
-
-.alert-danger {
- color: #b94a48;
- background-color: #f2dede;
- border-color: #eed3d7;
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #faebcc;
}
-
-.alert-danger hr {
- border-top-color: #e6c1c7;
+.panel-warning > .panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b;
}
-
-.alert-danger .alert-link {
- color: #953b39;
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #faebcc;
}
-
-@-webkit-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
+.panel-danger {
+ border-color: #ebccd1;
}
-
-@-moz-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
+.panel-danger > .panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
}
-
-@-o-keyframes progress-bar-stripes {
- from {
- background-position: 0 0;
- }
- to {
- background-position: 40px 0;
- }
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ebccd1;
}
-
-@keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
+.panel-danger > .panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442;
}
-
-.progress {
- height: 20px;
- margin-bottom: 20px;
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
overflow: hidden;
- background-color: #f5f5f5;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
-
-.progress-bar {
- float: left;
- width: 0;
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
height: 100%;
- font-size: 12px;
- color: #ffffff;
- text-align: center;
- background-color: #428bca;
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- -webkit-transition: width 0.6s ease;
- transition: width 0.6s ease;
-}
-
-.progress-striped .progress-bar {
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-size: 40px 40px;
+ width: 100%;
+ border: 0;
}
-
-.progress.active .progress-bar {
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -moz-animation: progress-bar-stripes 2s linear infinite;
- -ms-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
+.embed-responsive.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
}
-
-.progress-bar-success {
- background-color: #5cb85c;
+.embed-responsive.embed-responsive-4by3 {
+ padding-bottom: 75%;
}
-
-.progress-striped .progress-bar-success {
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
-
-.progress-bar-info {
- background-color: #5bc0de;
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
}
-
-.progress-striped .progress-bar-info {
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+.well-lg {
+ padding: 24px;
+ border-radius: 6px;
}
-
-.progress-bar-warning {
- background-color: #f0ad4e;
+.well-sm {
+ padding: 9px;
+ border-radius: 3px;
}
-
-.progress-striped .progress-bar-warning {
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+.close {
+ float: right;
+ font-size: 21px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
}
-
-.progress-bar-danger {
- background-color: #d9534f;
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
}
-
-.progress-striped .progress-bar-danger {
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
}
-
-.media,
-.media-body {
+.modal-open {
overflow: hidden;
- zoom: 1;
-}
-
-.media,
-.media .media {
- margin-top: 15px;
}
-
-.media:first-child {
- margin-top: 0;
-}
-
-.media-object {
- display: block;
-}
-
-.media-heading {
- margin: 0 0 5px;
+.modal {
+ display: none;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
}
-
-.media > .pull-left {
- margin-right: 10px;
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
}
-
-.media > .pull-right {
- margin-left: 10px;
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
}
-
-.media-list {
- padding-left: 0;
- list-style: none;
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
}
-
-.list-group {
- padding-left: 0;
- margin-bottom: 20px;
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
}
-
-.list-group-item {
+.modal-content {
position: relative;
- display: block;
- padding: 10px 15px;
- margin-bottom: -1px;
background-color: #ffffff;
- border: 1px solid #dddddd;
-}
-
-.list-group-item:first-child {
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
-}
-
-.list-group-item:last-child {
- margin-bottom: 0;
- border-bottom-right-radius: 4px;
- border-bottom-left-radius: 4px;
-}
-
-.list-group-item > .badge {
- float: right;
+ border: 1px solid #999999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+ outline: 0;
}
-
-.list-group-item > .badge + .badge {
- margin-right: 5px;
+.modal-backdrop {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ background-color: #000000;
}
-
-a.list-group-item {
- color: #555555;
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
}
-
-a.list-group-item .list-group-item-heading {
- color: #333333;
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
}
-
-a.list-group-item:hover,
-a.list-group-item:focus {
- text-decoration: none;
- background-color: #f5f5f5;
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+ min-height: 16.42857143px;
}
-
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
- z-index: 2;
- color: #ffffff;
- background-color: #428bca;
- border-color: #428bca;
+.modal-header .close {
+ margin-top: -2px;
}
-
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading {
- color: inherit;
+.modal-title {
+ margin: 0;
+ line-height: 1.42857143;
}
-
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text {
- color: #e1edf7;
+.modal-body {
+ position: relative;
+ padding: 15px;
}
-
-.list-group-item-heading {
- margin-top: 0;
- margin-bottom: 5px;
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
}
-
-.list-group-item-text {
+.modal-footer .btn + .btn {
+ margin-left: 5px;
margin-bottom: 0;
- line-height: 1.3;
}
-
-.panel {
- margin-bottom: 20px;
- background-color: #ffffff;
- border: 1px solid transparent;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
}
-
-.panel-body {
- padding: 15px;
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
}
-
-.panel-body:before,
-.panel-body:after {
- display: table;
- content: " ";
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
}
-
-.panel-body:after {
- clear: both;
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ }
+ .modal-sm {
+ width: 300px;
+ }
}
-
-.panel-body:before,
-.panel-body:after {
- display: table;
- content: " ";
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
}
-
-.panel-body:after {
- clear: both;
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ visibility: visible;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 12px;
+ font-weight: normal;
+ line-height: 1.4;
+ opacity: 0;
+ filter: alpha(opacity=0);
}
-
-.panel > .list-group {
- margin-bottom: 0;
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
}
-
-.panel > .list-group .list-group-item {
- border-width: 1px 0;
+.tooltip.top {
+ margin-top: -3px;
+ padding: 5px 0;
}
-
-.panel > .list-group .list-group-item:first-child {
- border-top-right-radius: 0;
- border-top-left-radius: 0;
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 5px;
}
-
-.panel > .list-group .list-group-item:last-child {
- border-bottom: 0;
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 5px 0;
}
-
-.panel-heading + .list-group .list-group-item:first-child {
- border-top-width: 0;
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 5px;
}
-
-.panel > .table {
- margin-bottom: 0;
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ border-radius: 4px;
}
-
-.panel > .panel-body + .table {
- border-top: 1px solid #dddddd;
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
}
-
-.panel-heading {
- padding: 10px 15px;
- border-bottom: 1px solid transparent;
- border-top-right-radius: 3px;
- border-top-left-radius: 3px;
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
}
-
-.panel-title {
- margin-top: 0;
- margin-bottom: 0;
- font-size: 16px;
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ right: 5px;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
}
-
-.panel-title > a {
- color: inherit;
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
}
-
-.panel-footer {
- padding: 10px 15px;
- background-color: #f5f5f5;
- border-top: 1px solid #dddddd;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000000;
}
-
-.panel-group .panel {
- margin-bottom: 0;
- overflow: hidden;
- border-radius: 4px;
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000000;
}
-
-.panel-group .panel + .panel {
- margin-top: 5px;
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
}
-
-.panel-group .panel-heading {
- border-bottom: 0;
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
}
-
-.panel-group .panel-heading + .panel-collapse .panel-body {
- border-top: 1px solid #dddddd;
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
}
-
-.panel-group .panel-footer {
- border-top: 0;
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: left;
+ background-color: #ffffff;
+ background-clip: padding-box;
+ border: 1px solid #cccccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ white-space: normal;
}
-
-.panel-group .panel-footer + .panel-collapse .panel-body {
- border-bottom: 1px solid #dddddd;
+.popover.top {
+ margin-top: -10px;
}
-
-.panel-default {
- border-color: #dddddd;
+.popover.right {
+ margin-left: 10px;
}
-
-.panel-default > .panel-heading {
- color: #333333;
- background-color: #f5f5f5;
- border-color: #dddddd;
+.popover.bottom {
+ margin-top: 10px;
}
-
-.panel-default > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #dddddd;
+.popover.left {
+ margin-left: -10px;
}
-
-.panel-default > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #dddddd;
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 14px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
}
-
-.panel-primary {
- border-color: #428bca;
+.popover-content {
+ padding: 9px 14px;
}
-
-.panel-primary > .panel-heading {
- color: #ffffff;
- background-color: #428bca;
- border-color: #428bca;
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
}
-
-.panel-primary > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #428bca;
+.popover > .arrow {
+ border-width: 11px;
}
-
-.panel-primary > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #428bca;
+.popover > .arrow:after {
+ border-width: 10px;
+ content: "";
}
-
-.panel-success {
- border-color: #d6e9c6;
+.popover.top > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
}
-
-.panel-success > .panel-heading {
- color: #468847;
- background-color: #dff0d8;
- border-color: #d6e9c6;
+.popover.top > .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #ffffff;
}
-
-.panel-success > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #d6e9c6;
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: rgba(0, 0, 0, 0.25);
}
-
-.panel-success > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #d6e9c6;
+.popover.right > .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
}
-
-.panel-warning {
- border-color: #fbeed5;
+.popover.bottom > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ top: -11px;
}
-
-.panel-warning > .panel-heading {
- color: #c09853;
- background-color: #fcf8e3;
- border-color: #fbeed5;
+.popover.bottom > .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
}
-
-.panel-warning > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #fbeed5;
+.popover.left > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999999;
+ border-left-color: rgba(0, 0, 0, 0.25);
}
-
-.panel-warning > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #fbeed5;
+.popover.left > .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #ffffff;
+ bottom: -10px;
}
-
-.panel-danger {
- border-color: #eed3d7;
+.carousel {
+ position: relative;
}
-
-.panel-danger > .panel-heading {
- color: #b94a48;
- background-color: #f2dede;
- border-color: #eed3d7;
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
}
-
-.panel-danger > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #eed3d7;
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
}
-
-.panel-danger > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #eed3d7;
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ line-height: 1;
}
-
-.panel-info {
- border-color: #bce8f1;
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ transition: transform 0.6s ease-in-out;
+ backface-visibility: hidden;
+ perspective: 1000;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ transform: translate3d(100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ transform: translate3d(0, 0, 0);
+ left: 0;
+ }
}
-
-.panel-info > .panel-heading {
- color: #3a87ad;
- background-color: #d9edf7;
- border-color: #bce8f1;
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
}
-
-.panel-info > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #bce8f1;
+.carousel-inner > .active {
+ left: 0;
}
-
-.panel-info > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #bce8f1;
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
}
-
-.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border: 1px solid #e3e3e3;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+.carousel-inner > .next {
+ left: 100%;
}
-
-.well blockquote {
- border-color: #ddd;
- border-color: rgba(0, 0, 0, 0.15);
+.carousel-inner > .prev {
+ left: -100%;
}
-
-.well-lg {
- padding: 24px;
- border-radius: 6px;
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
}
-
-.well-sm {
- padding: 9px;
- border-radius: 3px;
+.carousel-inner > .active.left {
+ left: -100%;
}
-
-.close {
- float: right;
- font-size: 21px;
- font-weight: bold;
- line-height: 1;
- color: #000000;
- text-shadow: 0 1px 0 #ffffff;
- opacity: 0.2;
- filter: alpha(opacity=20);
+.carousel-inner > .active.right {
+ left: 100%;
}
-
-.close:hover,
-.close:focus {
- color: #000000;
- text-decoration: none;
- cursor: pointer;
+.carousel-control {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 15%;
opacity: 0.5;
filter: alpha(opacity=50);
+ font-size: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
-
-button.close {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
-}
-
-.modal-open {
- overflow: hidden;
-}
-
-body.modal-open,
-.modal-open .navbar-fixed-top,
-.modal-open .navbar-fixed-bottom {
- margin-right: 15px;
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
-
-.modal {
- position: fixed;
- top: 0;
+.carousel-control.right {
+ left: auto;
right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- display: none;
- overflow: auto;
- overflow-y: scroll;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
-
-.modal.fade .modal-dialog {
- -webkit-transform: translate(0, -25%);
- -ms-transform: translate(0, -25%);
- transform: translate(0, -25%);
- -webkit-transition: -webkit-transform 0.3s ease-out;
- -moz-transition: -moz-transform 0.3s ease-out;
- -o-transition: -o-transform 0.3s ease-out;
- transition: transform 0.3s ease-out;
+.carousel-control:hover,
+.carousel-control:focus {
+ outline: 0;
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
}
-
-.modal.in .modal-dialog {
- -webkit-transform: translate(0, 0);
- -ms-transform: translate(0, 0);
- transform: translate(0, 0);
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
}
-
-.modal-dialog {
- z-index: 1050;
- width: auto;
- padding: 10px;
- margin-right: auto;
- margin-left: auto;
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
}
-
-.modal-content {
- position: relative;
- background-color: #ffffff;
- border: 1px solid #999999;
- border: 1px solid rgba(0, 0, 0, 0.2);
- border-radius: 6px;
- outline: none;
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
- box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
- background-clip: padding-box;
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
}
-
-.modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1030;
- background-color: #000000;
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ font-family: serif;
}
-
-.modal-backdrop.fade {
- opacity: 0;
- filter: alpha(opacity=0);
+.carousel-control .icon-prev:before {
+ content: '\2039';
}
-
-.modal-backdrop.in {
- opacity: 0.5;
- filter: alpha(opacity=50);
+.carousel-control .icon-next:before {
+ content: '\203a';
}
-
-.modal-header {
- min-height: 16.428571429px;
- padding: 15px;
- border-bottom: 1px solid #e5e5e5;
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
}
-
-.modal-header .close {
- margin-top: -2px;
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid #ffffff;
+ border-radius: 10px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
}
-
-.modal-title {
+.carousel-indicators .active {
margin: 0;
- line-height: 1.428571429;
-}
-
-.modal-body {
- position: relative;
- padding: 20px;
+ width: 12px;
+ height: 12px;
+ background-color: #ffffff;
}
-
-.modal-footer {
- padding: 19px 20px 20px;
- margin-top: 15px;
- text-align: right;
- border-top: 1px solid #e5e5e5;
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
-
-.modal-footer:before,
-.modal-footer:after {
- display: table;
- content: " ";
+.carousel-caption .btn {
+ text-shadow: none;
}
-
-.modal-footer:after {
- clear: both;
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ left: 20%;
+ right: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
}
-
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
.modal-footer:before,
.modal-footer:after {
- display: table;
content: " ";
+ display: table;
}
-
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
.modal-footer:after {
clear: both;
}
-
-.modal-footer .btn + .btn {
- margin-bottom: 0;
- margin-left: 5px;
-}
-
-.modal-footer .btn-group .btn + .btn {
- margin-left: -1px;
-}
-
-.modal-footer .btn-block + .btn-block {
- margin-left: 0;
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
}
-
-@media screen and (min-width: 768px) {
- .modal-dialog {
- right: auto;
- left: 50%;
- width: 600px;
- padding-top: 30px;
- padding-bottom: 30px;
- }
- .modal-content {
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
- }
+.pull-right {
+ float: right !important;
}
-
-.tooltip {
- position: absolute;
- z-index: 1030;
- display: block;
- font-size: 12px;
- line-height: 1.4;
- opacity: 0;
- filter: alpha(opacity=0);
- visibility: visible;
+.pull-left {
+ float: left !important;
}
-
-.tooltip.in {
- opacity: 0.9;
- filter: alpha(opacity=90);
+.hide {
+ display: none !important;
}
-
-.tooltip.top {
- padding: 5px 0;
- margin-top: -3px;
+.show {
+ display: block !important;
}
-
-.tooltip.right {
- padding: 0 5px;
- margin-left: 3px;
+.invisible {
+ visibility: hidden;
}
-
-.tooltip.bottom {
- padding: 5px 0;
- margin-top: 3px;
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
}
-
-.tooltip.left {
- padding: 0 5px;
- margin-left: -3px;
+.hidden {
+ display: none !important;
+ visibility: hidden !important;
}
-
-.tooltip-inner {
- max-width: 200px;
- padding: 3px 8px;
- color: #ffffff;
- text-align: center;
- text-decoration: none;
- background-color: #000000;
- border-radius: 4px;
+.affix {
+ position: fixed;
}
-
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
+@-ms-viewport {
+ width: device-width;
}
-
-.tooltip.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -5px;
- border-top-color: #000000;
- border-width: 5px 5px 0;
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
}
-
-.tooltip.top-left .tooltip-arrow {
- bottom: 0;
- left: 5px;
- border-top-color: #000000;
- border-width: 5px 5px 0;
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
}
-
-.tooltip.top-right .tooltip-arrow {
- right: 5px;
- bottom: 0;
- border-top-color: #000000;
- border-width: 5px 5px 0;
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
}
-
-.tooltip.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -5px;
- border-right-color: #000000;
- border-width: 5px 5px 5px 0;
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
}
-
-.tooltip.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -5px;
- border-left-color: #000000;
- border-width: 5px 0 5px 5px;
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
}
-
-.tooltip.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -5px;
- border-bottom-color: #000000;
- border-width: 0 5px 5px;
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
}
-
-.tooltip.bottom-left .tooltip-arrow {
- top: 0;
- left: 5px;
- border-bottom-color: #000000;
- border-width: 0 5px 5px;
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
}
-
-.tooltip.bottom-right .tooltip-arrow {
- top: 0;
- right: 5px;
- border-bottom-color: #000000;
- border-width: 0 5px 5px;
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
}
-
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 1010;
- display: none;
- max-width: 276px;
- padding: 1px;
- text-align: left;
- white-space: normal;
- background-color: #ffffff;
- border: 1px solid #cccccc;
- border: 1px solid rgba(0, 0, 0, 0.2);
- border-radius: 6px;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- background-clip: padding-box;
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
}
-
-.popover.top {
- margin-top: -10px;
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
}
-
-.popover.right {
- margin-left: 10px;
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
}
-
-.popover.bottom {
- margin-top: 10px;
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
}
-
-.popover.left {
- margin-left: -10px;
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
}
-
-.popover-title {
- padding: 8px 14px;
- margin: 0;
- font-size: 14px;
- font-weight: normal;
- line-height: 18px;
- background-color: #f7f7f7;
- border-bottom: 1px solid #ebebeb;
- border-radius: 5px 5px 0 0;
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
}
-
-.popover-content {
- padding: 9px 14px;
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
}
-
-.popover .arrow,
-.popover .arrow:after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
}
-
-.popover .arrow {
- border-width: 11px;
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
}
-
-.popover .arrow:after {
- border-width: 10px;
- content: "";
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
}
-
-.popover.top .arrow {
- bottom: -11px;
- left: 50%;
- margin-left: -11px;
- border-top-color: #999999;
- border-top-color: rgba(0, 0, 0, 0.25);
- border-bottom-width: 0;
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
}
-
-.popover.top .arrow:after {
- bottom: 1px;
- margin-left: -10px;
- border-top-color: #ffffff;
- border-bottom-width: 0;
- content: " ";
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
}
-
-.popover.right .arrow {
- top: 50%;
- left: -11px;
- margin-top: -11px;
- border-right-color: #999999;
- border-right-color: rgba(0, 0, 0, 0.25);
- border-left-width: 0;
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
}
-
-.popover.right .arrow:after {
- bottom: -10px;
- left: 1px;
- border-right-color: #ffffff;
- border-left-width: 0;
- content: " ";
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
}
-
-.popover.bottom .arrow {
- top: -11px;
- left: 50%;
- margin-left: -11px;
- border-bottom-color: #999999;
- border-bottom-color: rgba(0, 0, 0, 0.25);
- border-top-width: 0;
+.visible-print {
+ display: none !important;
}
-
-.popover.bottom .arrow:after {
- top: 1px;
- margin-left: -10px;
- border-bottom-color: #ffffff;
- border-top-width: 0;
- content: " ";
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
}
-
-.popover.left .arrow {
- top: 50%;
- right: -11px;
- margin-top: -11px;
- border-left-color: #999999;
- border-left-color: rgba(0, 0, 0, 0.25);
- border-right-width: 0;
+.visible-print-block {
+ display: none !important;
}
-
-.popover.left .arrow:after {
- right: 1px;
- bottom: -10px;
- border-left-color: #ffffff;
- border-right-width: 0;
- content: " ";
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
}
-
-.carousel {
- position: relative;
+.visible-print-inline {
+ display: none !important;
}
-
-.carousel-inner {
- position: relative;
- width: 100%;
- overflow: hidden;
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
}
-
-.carousel-inner > .item {
- position: relative;
- display: none;
- -webkit-transition: 0.6s ease-in-out left;
- transition: 0.6s ease-in-out left;
+.visible-print-inline-block {
+ display: none !important;
}
-
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
- display: block;
- height: auto;
- max-width: 100%;
- line-height: 1;
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
}
-
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
- display: block;
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
}
-
-.carousel-inner > .active {
- left: 0;
+.reset {
+ margin: 0;
+ padding: 0;
}
-
-.carousel-inner > .next,
-.carousel-inner > .prev {
- position: absolute;
- top: 0;
+.full-width {
width: 100%;
}
-
-.carousel-inner > .next {
- left: 100%;
-}
-
-.carousel-inner > .prev {
- left: -100%;
+body {
+ margin-top: 60px;
+ font-weight: 400;
+ font-family: 'Open Sans', sans-serif;
+ color: #484848;
+ position: relative;
}
-
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
- left: 0;
+.alt {
+ color: #999999;
}
-
-.carousel-inner > .active.left {
- left: -100%;
+strong {
+ font-weight: 600;
}
-
-.carousel-inner > .active.right {
- left: 100%;
+section {
+ padding: 30px 0;
}
-
-.carousel-control {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: 15%;
- font-size: 20px;
- color: #ffffff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
- opacity: 0.5;
- filter: alpha(opacity=50);
+footer {
+ padding: 60px 0;
}
-
-.carousel-control.left {
- background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
- background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%));
- background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: 'Exo 2', sans-serif;
}
-
-.carousel-control.right {
- right: 0;
- left: auto;
- background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
- background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%));
- background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
- background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+p {
+ line-height: 1.5;
}
-
-.carousel-control:hover,
-.carousel-control:focus {
- color: #ffffff;
- text-decoration: none;
- opacity: 0.9;
- filter: alpha(opacity=90);
+.btn {
+ font-family: 'Exo 2', sans-serif;
}
-
-.carousel-control .icon-prev,
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .glyphicon-chevron-right {
- position: absolute;
- top: 50%;
- left: 50%;
- z-index: 5;
- display: inline-block;
+.btn-default {
+ background-image: -webkit-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: -o-linear-gradient(top, #fafafa 0%, #ededed 100%);
+ background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
}
-
-.carousel-control .icon-prev,
-.carousel-control .icon-next {
- width: 20px;
- height: 20px;
- margin-top: -10px;
- margin-left: -10px;
- font-family: serif;
+.btn-default:hover {
+ background-image: none;
+ background-color: #eee;
}
-
-.carousel-control .icon-prev:before {
- content: '\2039';
+table {
+ font-weight: 400;
}
-
-.carousel-control .icon-next:before {
- content: '\203a';
+.section-header {
+ text-transform: uppercase;
+ border-bottom: 1px solid #dddddd;
+ margin-bottom: 20px;
+ padding-bottom: 5px;
+ margin-top: 30px;
+}
+.text-content h1,
+.text-content h2,
+.text-content h3,
+.text-content h4,
+.text-content h5,
+.text-content h6 {
+ font-weight: 400;
+}
+.text-content h2 {
+ text-transform: uppercase;
+ border-bottom: 1px solid #dddddd;
+ margin-bottom: 20px;
+ padding-bottom: 5px;
+ margin-top: 30px;
}
-
-.carousel-indicators {
- position: absolute;
- bottom: 10px;
- left: 50%;
- z-index: 15;
- width: 60%;
- padding-left: 0;
- margin-left: -30%;
- text-align: center;
- list-style: none;
+.text-content h2 :first-child {
+ margin-top: 0;
}
-
-.carousel-indicators li {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 1px;
- text-indent: -999px;
- cursor: pointer;
- border: 1px solid #ffffff;
- border-radius: 10px;
+.text-content h3 {
+ margin-top: 25px;
+ margin-bottom: 15px;
}
-
-.carousel-indicators .active {
- width: 12px;
- height: 12px;
- margin: 0;
- background-color: #ffffff;
+.text-content p {
+ font-weight: 400;
}
-
-.carousel-caption {
- position: absolute;
- right: 15%;
- bottom: 20px;
- left: 15%;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
- color: #ffffff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+.text-content p.lead {
+ font-size: 18px;
+ font-weight: 300;
}
-
-.carousel-caption .btn {
- text-shadow: none;
+.text-content h4 {
+ margin-top: 20px;
}
-
-@media screen and (min-width: 768px) {
- .carousel-control .icon-prev,
- .carousel-control .icon-next {
- width: 30px;
- height: 30px;
- margin-top: -15px;
- margin-left: -15px;
- font-size: 30px;
- }
- .carousel-caption {
- right: 20%;
- left: 20%;
- padding-bottom: 30px;
- }
- .carousel-indicators {
- bottom: 20px;
- }
+.text-content h5 {
+ font-weight: bold;
+ margin-top: 20px;
}
-
-.clearfix:before,
-.clearfix:after {
- display: table;
- content: " ";
+.navbar {
+ border: none;
+ box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
+ background-color: #fff;
}
-
-.clearfix:after {
- clear: both;
+.nav a {
+ color: #999999;
+ font-weight: 600;
+ font-family: 'Exo 2', sans-serif;
}
-
-.pull-right {
- float: right !important;
+.nav a:hover {
+ color: #428bca;
}
-
-.pull-left {
- float: left !important;
+.nav li.active > a {
+ color: #428bca;
}
-
-.hide {
- display: none !important;
+.nav > li.active > a {
+ border-right: 3px solid #428bca;
}
-
-.show {
- display: block !important;
+.navbar-brand {
+ background: url(../img/scribble.svg) no-repeat 15px center;
+ text-indent: -999999px;
+ margin-top: 8px;
+ margin-right: 10px;
+ width: 225px;
+ height: 50px;
}
-
-.invisible {
- visibility: hidden;
+.navbar-toggle {
+ border-color: #999999;
}
-
-.text-hide {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
+.navbar-toggle .icon-bar {
+ background-color: #999999;
}
-
-.affix {
- position: fixed;
+.dropdown-menu li a {
+ line-height: 1.5714285714;
}
-
-@-ms-viewport {
- width: device-width;
+.main-banner {
+ background: #428bca url(../img/banner-bg.jpg) repeat-x left top;
+ color: #fff;
+ padding: 60px 0;
}
-
-@media screen and (max-width: 400px) {
- @-ms-viewport {
- width: 320px;
+@media (max-width: 640px) {
+ .main-banner {
+ padding: 40px 0;
}
}
-
-.hidden {
- display: none !important;
- visibility: hidden !important;
+.main-banner h1 {
+ font-weight: 300;
+ line-height: 1.1;
+ margin-top: 0;
+ font-size: 40px;
+ margin-bottom: 6px;
+ text-shadow: 0px 3px 5px rgba(0, 0, 0, 0.15);
}
-
-.visible-xs {
- display: none !important;
+.main-banner p {
+ font-size: 18px;
+ color: rgba(255, 255, 255, 0.5);
+ margin-left: 2px;
}
-
-tr.visible-xs {
- display: none !important;
+.homepage .main-banner {
+ padding: 25px 0;
+ text-align: center;
}
-
-th.visible-xs,
-td.visible-xs {
- display: none !important;
+.homepage .main-banner h1 {
+ font-size: 60px;
+ margin-bottom: 20px;
+}
+@media (max-width: 991px) {
+ .homepage .main-banner h1 {
+ /* 991px */
+ font-size: 56px;
+ }
}
-
@media (max-width: 767px) {
- .visible-xs {
- display: block !important;
+ .homepage .main-banner h1 {
+ /* 767px */
+ margin-left: 15px;
+ margin-right: 15px;
+ margin-top: 5px;
+ font-size: 48px;
+ margin-bottom: 40px;
}
- tr.visible-xs {
- display: table-row !important;
+}
+@media (max-width: 640px) {
+ .homepage .main-banner h1 {
+ font-size: 36px;
+ margin-bottom: 25px;
+ margin-left: 0;
+ margin-right: 0;
}
- th.visible-xs,
- td.visible-xs {
- display: table-cell !important;
+}
+@media (min-width: 768px) {
+ .homepage .main-banner h1 span {
+ /* 768px */
+ white-space: nowrap;
}
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-xs.visible-sm {
- display: block !important;
+.homepage .main-banner .buttons {
+ margin-bottom: 10px;
+}
+.homepage .main-banner .buttons .btn-lg {
+ font-size: 20px;
+ border: 2px solid #fff;
+ width: 215px;
+ padding: 14px;
+ opacity: 0.9;
+ margin-right: 7px;
+ margin-left: 7px;
+ margin-bottom: 10px;
+}
+.homepage .main-banner .buttons .btn-lg.btn-primary {
+ background-color: #fff;
+ color: #428bca;
+}
+.homepage .main-banner .buttons .btn-lg.btn-default {
+ background-color: transparent;
+ background-image: none;
+ border-color: #fff;
+ color: #fff;
+}
+.homepage .main-banner .buttons .btn-lg:hover {
+ opacity: 1;
+ -webkit-transition: 0.1s linear;
+ -moz-transition: 0.1s linear;
+ transition: 0.1s linear;
+}
+.homepage .main-banner .version {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 14px;
+ font-style: normal;
+}
+.homepage .main-banner .version .fa {
+ margin-right: 5px;
+}
+/* Animations */
+@-webkit-keyframes fadeInUpWebkit {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
}
- tr.visible-xs.visible-sm {
- display: table-row !important;
+ to {
+ opacity: 1;
+ -webkit-transform: none;
+ transform: none;
}
- th.visible-xs.visible-sm,
- td.visible-xs.visible-sm {
- display: table-cell !important;
+}
+@-moz-keyframes fadeInUpMoz {
+ from {
+ opacity: 0;
+ -moz-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+ to {
+ opacity: 1;
+ -moz-transform: none;
+ transform: none;
}
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-xs.visible-md {
- display: block !important;
+@keyframes fadeInUp {
+ from {
+ opacity: 0;
+ transform: translate3d(0, 100%, 0);
}
- tr.visible-xs.visible-md {
- display: table-row !important;
+ to {
+ opacity: 1;
+ transform: none;
}
- th.visible-xs.visible-md,
- td.visible-xs.visible-md {
- display: table-cell !important;
+}
+@-webkit-keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
}
}
-
-@media (min-width: 1200px) {
- .visible-xs.visible-lg {
- display: block !important;
+@-moz-keyframes fadeIn {
+ from {
+ opacity: 0;
}
- tr.visible-xs.visible-lg {
- display: table-row !important;
+ to {
+ opacity: 1;
}
- th.visible-xs.visible-lg,
- td.visible-xs.visible-lg {
- display: table-cell !important;
+}
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
}
}
-
-.visible-sm {
- display: none !important;
+.fade-in-up {
+ opacity: 0;
+ -webkit-animation: fadeInUpWebkit ease 1;
+ -moz-animation: fadeInUpMoz ease-in 1;
+ animation: fadeInUp ease-in 1;
+ -webkit-animation-fill-mode: forwards;
+ -moz-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-duration: 1s;
+ -moz-animation-duration: 1s;
+ animation-duration: 1s;
+}
+.fade-in-up.one {
+ -webkit-animation-delay: 0.6s;
+ -moz-animation-delay: 0.6s;
+ animation-delay: 0.6s;
+}
+.fade-in {
+ opacity: 0;
+ /* make things invisible upon start */
+ -webkit-animation: fadeIn ease 1;
+ /* call our keyframe named fadeIn, use animattion ease-in and repeat it only 1 time */
+ -moz-animation: fadeIn ease-in 1;
+ animation: fadeIn ease-in 1;
+ -webkit-animation-fill-mode: forwards;
+ /* this makes sure that after animation is done we remain at the last keyframe value (opacity: 1)*/
+ -moz-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-duration: 1s;
+ -moz-animation-duration: 1s;
+ animation-duration: 1s;
+}
+.fade-in.two {
+ -webkit-animation-delay: 1.4s;
+ -moz-animation-delay: 1.4s;
+ animation-delay: 1.4s;
+}
+.fade-in.three {
+ -webkit-animation-delay: 2s;
+ -moz-animation-delay: 2s;
+ animation-delay: 2s;
+}
+.boxes {
+ padding-top: 1px;
+ padding-bottom: 0;
+}
+.boxes .row {
+ margin-left: 0;
+ margin-right: 0;
}
-
-tr.visible-sm {
- display: none !important;
+.boxes .box {
+ padding: 0;
}
-
-th.visible-sm,
-td.visible-sm {
- display: none !important;
+.boxes .box .content {
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e2e2e2 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e2e2e2 100%);
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e2e2e2 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe2e2e2', GradientType=0);
+ border: 1px solid #fff;
+ height: 200px;
+ text-align: center;
+ background-repeat: no-repeat;
+ background-position: center top;
+ background-size: auto 200px;
}
-
-@media (max-width: 767px) {
- .visible-sm.visible-xs {
- display: block !important;
+.boxes .box.server-side .content {
+ background-image: url(../img/box-server.jpg);
+}
+@media only screen and (-Webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min-device-pixel-ratio: 1.5) {
+ .boxes .box.server-side .content {
+ background-image: url(../img/box-server@2x.jpg);
}
- tr.visible-sm.visible-xs {
- display: table-row !important;
+}
+.boxes .box.services .content {
+ background-image: url(../img/box-services.jpg);
+}
+@media only screen and (-Webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min-device-pixel-ratio: 1.5) {
+ .boxes .box.services .content {
+ background-image: url(../img/box-services@2x.jpg);
}
- th.visible-sm.visible-xs,
- td.visible-sm.visible-xs {
- display: table-cell !important;
+}
+.boxes .box.cloud .content {
+ background-image: url(../img/box-cloud.jpg);
+}
+@media only screen and (-Webkit-min-device-pixel-ratio: 1.5), only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min-device-pixel-ratio: 1.5) {
+ .boxes .box.cloud .content {
+ background-image: url(../img/box-cloud@2x.jpg);
}
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm {
- display: block !important;
+.boxes .box h3 {
+ font-size: 20px;
+ margin-top: 20px;
+ margin-bottom: 2px;
+}
+@media (max-width: 991px) {
+ .boxes .box h3 {
+ /* 991px */
+ font-size: 18px;
}
- tr.visible-sm {
- display: table-row !important;
+}
+.boxes .box p,
+.boxes .box a {
+ font-size: 14px;
+}
+.boxes .box p {
+ color: #999999;
+}
+.description {
+ background: url(../img/home-separator.png) no-repeat center bottom;
+ background-size: 100% 1px;
+}
+.description p {
+ font-size: 20px;
+ line-height: 1.6;
+ text-align: center;
+ padding: 0 20%;
+ margin: 5px 0;
+ font-weight: 300;
+}
+@media (max-width: 1199px) {
+ .description p {
+ /* 1199px */
+ padding: 0 14%;
}
- th.visible-sm,
- td.visible-sm {
- display: table-cell !important;
+}
+@media (max-width: 991px) {
+ .description p {
+ /* 991px */
+ padding: 0 30px;
}
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-sm.visible-md {
- display: block !important;
+@media (max-width: 767px) {
+ .description p {
+ /* 768px */
+ padding: 0 15px;
+ font-size: 16px;
}
- tr.visible-sm.visible-md {
- display: table-row !important;
+}
+.main-features h2 {
+ font-size: 36px;
+ font-weight: 300;
+ text-align: center;
+ margin-bottom: 50px;
+}
+@media (max-width: 767px) {
+ .main-features h2 {
+ /* 768px */
+ font-size: 30px;
+ margin-bottom: 40px;
+ margin-top: 10px;
}
- th.visible-sm.visible-md,
- td.visible-sm.visible-md {
- display: table-cell !important;
+}
+.main-features ul {
+ padding-left: 0;
+}
+.main-features ul li {
+ list-style: none;
+ text-align: center;
+ margin-bottom: 30px;
+}
+.main-features ul li .fa {
+ font-size: 40px;
+}
+.main-features ul li h4 {
+ font-size: 16px;
+ font-weight: 600;
+ margin-bottom: 5px;
+}
+.main-features ul li h4 span {
+ color: #999999;
+ font-weight: 400;
+}
+@media (min-width: 992px) {
+ #sidebar {
+ margin-top: 6px;
}
}
-
@media (min-width: 1200px) {
- .visible-sm.visible-lg {
- display: block !important;
- }
- tr.visible-sm.visible-lg {
- display: table-row !important;
+ #preamble .affix {
+ top: 95px;
+ width: calc(1270px/4 - 30px);
}
- th.visible-sm.visible-lg,
- td.visible-sm.visible-lg {
- display: table-cell !important;
+}
+@media (max-width: 1199px) {
+ #preamble .affix {
+ top: 95px;
+ width: calc(970px/4 - 30px);
}
}
-
-.visible-md {
- display: none !important;
+#preamble > .nav > li > .nav {
+ display: none;
}
-
-tr.visible-md {
- display: none !important;
+.sidebar > .nav > li.active > .nav {
+ display: block;
}
-
-th.visible-md,
-td.visible-md {
- display: none !important;
+.sidebar a {
+ font-weight: 400;
+}
+.sidebar .active > a {
+ border-right: 2px solid #428bca;
+}
+.sidebar > .nav > li > a {
+ text-transform: uppercase;
+}
+.sidebar .nav > li > a {
+ padding: 8px 15px;
+}
+.sidebar .nav > li > .nav {
+ margin-bottom: 10px;
+}
+.sidebar .nav > li > .nav li a {
+ padding: 4px 15px 4px 35px;
+}
+.sidebar .nav > li a.btn {
+ margin-bottom: 15px;
+ margin-top: -6px;
+ color: #484848;
+ text-transform: none;
+}
+.imageblock {
+ margin-bottom: 10px;
+}
+.imageblock + .paragraph {
+ margin-top: 15px;
+}
+.paragraph + .imageblock {
+ margin-top: 17px;
+}
+.downloads .btn.github {
+ width: calc(50% - 15px);
+ margin-bottom: 10px;
}
-
@media (max-width: 767px) {
- .visible-md.visible-xs {
- display: block !important;
- }
- tr.visible-md.visible-xs {
- display: table-row !important;
- }
- th.visible-md.visible-xs,
- td.visible-md.visible-xs {
- display: table-cell !important;
+ .downloads .btn.github {
+ width: 100%;
}
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-md.visible-sm {
- display: block !important;
- }
- tr.visible-md.visible-sm {
- display: table-row !important;
- }
- th.visible-md.visible-sm,
- td.visible-md.visible-sm {
- display: table-cell !important;
- }
+.downloads .download-buttons {
+ margin-bottom: 10px;
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md {
- display: block !important;
- }
- tr.visible-md {
- display: table-row !important;
- }
- th.visible-md,
- td.visible-md {
- display: table-cell !important;
- }
+.downloads .download-buttons .btn span {
+ color: #999999;
+ font-size: 0.75em;
}
-
-@media (min-width: 1200px) {
- .visible-md.visible-lg {
- display: block !important;
- }
- tr.visible-md.visible-lg {
- display: table-row !important;
+@media (max-width: 767px) {
+ .downloads .download-buttons .btn {
+ margin-bottom: 10px;
}
- th.visible-md.visible-lg,
- td.visible-md.visible-lg {
- display: table-cell !important;
+}
+.builds tr.FAILURE td {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #a94442;
+}
+/* Adjusting anchor position */
+.downloads,
+.documentation,
+.scripting,
+.community {
+ /* General styles */
+ /* Downloads page */
+ /* Documentation page */
+}
+.downloads h2,
+.documentation h2,
+.scripting h2,
+.community h2,
+.downloads h3,
+.documentation h3,
+.scripting h3,
+.community h3,
+.downloads h4,
+.documentation h4,
+.scripting h4,
+.community h4 {
+ padding-top: 86px;
+}
+.downloads h3,
+.documentation h3,
+.scripting h3,
+.community h3,
+.downloads h4,
+.documentation h4,
+.scripting h4,
+.community h4 {
+ margin-top: -76px;
+}
+.downloads h2,
+.documentation h2,
+.scripting h2,
+.community h2 {
+ margin-top: -66px;
+}
+.downloads h2.first,
+.documentation h2.first,
+.scripting h2.first,
+.community h2.first,
+.downloads table + h2,
+.documentation table + h2,
+.scripting table + h2,
+.community table + h2,
+.downloads p.lead + h3,
+.documentation p.lead + h3,
+.scripting p.lead + h3,
+.community p.lead + h3 {
+ margin-top: -86px;
+}
+.downloads .text-content > .sect1:first-child > h2,
+.documentation .text-content > .sect1:first-child > h2,
+.scripting .text-content > .sect1:first-child > h2,
+.community .text-content > .sect1:first-child > h2,
+.downloads h2 + .sect2 > h3,
+.documentation h2 + .sect2 > h3,
+.scripting h2 + .sect2 > h3,
+.community h2 + .sect2 > h3,
+.downloads h2 + .sectionbody > .sect2:first-child > h3,
+.documentation h2 + .sectionbody > .sect2:first-child > h3,
+.scripting h2 + .sectionbody > .sect2:first-child > h3,
+.community h2 + .sectionbody > .sect2:first-child > h3 {
+ margin-top: -86px;
+}
+.blog .main-banner {
+ text-align: center;
+}
+.blog .main-banner h1 {
+ background: url(../img/Scribble.png) no-repeat center top;
+ background-size: 100px 100px;
+ padding-top: 105px;
+}
+.panel {
+ border-bottom: 1px solid #dddddd;
+ padding-bottom: 20px;
+ border-radius: 0;
+ margin-bottom: 30px;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}
+.blog {
+ font-size: 10px;
+}
+@media (max-width: 640px) {
+ .blog {
+ font-size: 9px;
}
}
-
-.visible-lg {
- display: none !important;
+.blog h1 {
+ margin-bottom: 5px;
+ font-size: 3.6em;
+}
+.blog h2 {
+ font-size: 2.7em;
+ margin-bottom: 20px;
+}
+.blog h3 {
+ font-size: 2.3em;
+}
+.blog .author,
+.blog .date {
+ display: inline-block;
+ color: #999999;
+ font-size: 1.4em;
+}
+.blog-post .author,
+.blog-post .date {
+ margin-bottom: 25px;
+}
+.blog-post .author + .date:before {
+ content: ".";
+ vertical-align: super;
+ margin-left: 3px;
+ margin-right: 3px;
+}
+.blog-post p {
+ font-family: 'Open Sans', sans-serif;
+ font-weight: 300;
+ font-size: 1.8em;
+}
+.blog-post ul li p {
+ margin-bottom: 0;
}
-
-tr.visible-lg {
- display: none !important;
+.blog-post .imageblock,
+.blog-post .videoblock {
+ margin-top: 15px;
}
-
-th.visible-lg,
-td.visible-lg {
- display: none !important;
+.blog-post-listings h3 {
+ margin-bottom: 0;
}
-
-@media (max-width: 767px) {
- .visible-lg.visible-xs {
- display: block !important;
- }
- tr.visible-lg.visible-xs {
- display: table-row !important;
- }
- th.visible-lg.visible-xs,
- td.visible-lg.visible-xs {
- display: table-cell !important;
- }
+.blog-post-item h4 {
+ margin-bottom: 5px;
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-lg.visible-sm {
- display: block !important;
- }
- tr.visible-lg.visible-sm {
- display: table-row !important;
- }
- th.visible-lg.visible-sm,
- td.visible-lg.visible-sm {
- display: table-cell !important;
- }
+.blog-pagination .older,
+.blog-pagination .newer {
+ font-size: 1.8em;
+ color: #999999;
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-lg.visible-md {
- display: block !important;
- }
- tr.visible-lg.visible-md {
- display: table-row !important;
- }
- th.visible-lg.visible-md,
- td.visible-lg.visible-md {
- display: table-cell !important;
- }
+.dropup {
+ margin-top: 6px!important;
}
-
-@media (min-width: 1200px) {
- .visible-lg {
- display: block !important;
- }
- tr.visible-lg {
- display: table-row !important;
- }
- th.visible-lg,
- td.visible-lg {
- display: table-cell !important;
- }
+#tabnav-panel.tabnav-opened {
+ margin-bottom: -7px;
}
-
-.hidden-xs {
- display: block !important;
+.note {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #31708f;
+ margin-bottom: 10px;
}
-
-tr.hidden-xs {
- display: table-row !important;
+.note h4 {
+ margin-top: 0;
+ color: inherit;
}
-
-th.hidden-xs,
-td.hidden-xs {
- display: table-cell !important;
+.note .alert-link {
+ font-weight: bold;
}
-
-@media (max-width: 767px) {
- .hidden-xs {
- display: none !important;
- }
- tr.hidden-xs {
- display: none !important;
- }
- th.hidden-xs,
- td.hidden-xs {
- display: none !important;
- }
+.note > p,
+.note > ul {
+ margin-bottom: 0;
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-xs.hidden-sm {
- display: none !important;
- }
- tr.hidden-xs.hidden-sm {
- display: none !important;
- }
- th.hidden-xs.hidden-sm,
- td.hidden-xs.hidden-sm {
- display: none !important;
- }
+.note > p + p {
+ margin-top: 5px;
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-xs.hidden-md {
- display: none !important;
- }
- tr.hidden-xs.hidden-md {
- display: none !important;
- }
- th.hidden-xs.hidden-md,
- td.hidden-xs.hidden-md {
- display: none !important;
- }
+.note hr {
+ border-top-color: #a6e1ec;
}
-
-@media (min-width: 1200px) {
- .hidden-xs.hidden-lg {
- display: none !important;
- }
- tr.hidden-xs.hidden-lg {
- display: none !important;
- }
- th.hidden-xs.hidden-lg,
- td.hidden-xs.hidden-lg {
- display: none !important;
- }
+.note .alert-link {
+ color: #245269;
}
-
-.hidden-sm {
- display: block !important;
+.note .fa {
+ font-size: 16px;
+ color: #31708f;
+ margin-right: 10px;
}
-
-tr.hidden-sm {
- display: table-row !important;
+.admonitionblock td.icon .icon-note:before {
+ content: "\f05a";
}
-
-th.hidden-sm,
-td.hidden-sm {
- display: table-cell !important;
+.quoteblock blockquote {
+ padding: 5px 20px;
}
-
-@media (max-width: 767px) {
- .hidden-sm.hidden-xs {
- display: none !important;
- }
- tr.hidden-sm.hidden-xs {
- display: none !important;
- }
- th.hidden-sm.hidden-xs,
- td.hidden-sm.hidden-xs {
- display: none !important;
- }
+.quoteblock p {
+ font-size: 14px;
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-sm {
- display: none !important;
- }
- tr.hidden-sm {
- display: none !important;
- }
- th.hidden-sm,
- td.hidden-sm {
- display: none !important;
- }
+table.tableblock {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-sm.hidden-md {
- display: none !important;
- }
- tr.hidden-sm.hidden-md {
- display: none !important;
- }
- th.hidden-sm.hidden-md,
- td.hidden-sm.hidden-md {
- display: none !important;
- }
+table.tableblock > thead > tr > th,
+table.tableblock > tbody > tr > th,
+table.tableblock > tfoot > tr > th,
+table.tableblock > thead > tr > td,
+table.tableblock > tbody > tr > td,
+table.tableblock > tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.42857143;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
}
-
-@media (min-width: 1200px) {
- .hidden-sm.hidden-lg {
- display: none !important;
- }
- tr.hidden-sm.hidden-lg {
- display: none !important;
- }
- th.hidden-sm.hidden-lg,
- td.hidden-sm.hidden-lg {
- display: none !important;
- }
+table.tableblock > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #dddddd;
}
-
-.hidden-md {
- display: block !important;
+table.tableblock > caption + thead > tr:first-child > th,
+table.tableblock > colgroup + thead > tr:first-child > th,
+table.tableblock > thead:first-child > tr:first-child > th,
+table.tableblock > caption + thead > tr:first-child > td,
+table.tableblock > colgroup + thead > tr:first-child > td,
+table.tableblock > thead:first-child > tr:first-child > td {
+ border-top: 0;
}
-
-tr.hidden-md {
- display: table-row !important;
+table.tableblock > tbody + tbody {
+ border-top: 2px solid #dddddd;
}
-
-th.hidden-md,
-td.hidden-md {
- display: table-cell !important;
+table.tableblock .table {
+ background-color: #ffffff;
}
-
-@media (max-width: 767px) {
- .hidden-md.hidden-xs {
- display: none !important;
- }
- tr.hidden-md.hidden-xs {
- display: none !important;
- }
- th.hidden-md.hidden-xs,
- td.hidden-md.hidden-xs {
- display: none !important;
- }
+table.tableblock > tbody > tr:nth-child(odd) {
+ background-color: #f9f9f9;
}
-
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-md.hidden-sm {
- display: none !important;
- }
- tr.hidden-md.hidden-sm {
- display: none !important;
- }
- th.hidden-md.hidden-sm,
- td.hidden-md.hidden-sm {
- display: none !important;
- }
+.colist {
+ margin-bottom: 10px;
}
-
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-md {
- display: none !important;
- }
- tr.hidden-md {
- display: none !important;
- }
- th.hidden-md,
- td.hidden-md {
- display: none !important;
- }
+.colist.arabic tr td:first-child {
+ padding-right: 10px;
+ vertical-align: top;
}
-
-@media (min-width: 1200px) {
- .hidden-md.hidden-lg {
- display: none !important;
- }
- tr.hidden-md.hidden-lg {
- display: none !important;
- }
- th.hidden-md.hidden-lg,
- td.hidden-md.hidden-lg {
- display: none !important;
- }
+#tabnav-panel.tabnav-opened {
+ height: 220px;
+ background: #f2f8ff;
}
-.hidden-lg {
- display: block !important;
+#tabnav .tabcontent {
+ padding-top: 30px;
+ height: 100%;
+ clear: both;
+ background: #f2f8ff;
+ padding: 20px 25px;
}
-
-tr.hidden-lg {
- display: table-row !important;
+*:focus {
+ outline: 0;
}
-
-th.hidden-lg,
-td.hidden-lg {
- display: table-cell !important;
+::selection {
+ background: #e1eef4;
}
-
-@media (max-width: 767px) {
- .hidden-lg.hidden-xs {
- display: none !important;
- }
- tr.hidden-lg.hidden-xs {
- display: none !important;
- }
- th.hidden-lg.hidden-xs,
- td.hidden-lg.hidden-xs {
- display: none !important;
- }
+::-moz-selection {
+ background: #e1eef4;
}
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-lg.hidden-sm {
- display: none !important;
- }
- tr.hidden-lg.hidden-sm {
- display: none !important;
- }
- th.hidden-lg.hidden-sm,
- td.hidden-lg.hidden-sm {
- display: none !important;
- }
+/* ----- fork on github banner ----- */
+#forkongithubp {
+ text-align: center;
}
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-lg.hidden-md {
- display: none !important;
- }
- tr.hidden-lg.hidden-md {
- display: none !important;
- }
- th.hidden-lg.hidden-md,
- td.hidden-lg.hidden-md {
- display: none !important;
- }
+#forkongithub a {
+ color:#428bca;
+}
+.bg-grey { background-color: #333 !important; }
+#forkongithub a::before, #forkongithub a::after {
+ content:""; width:100%; display:block; position:absolute;
+ top:1px; left:0; height:1px; background:#fff;
+}
+#forkongithub a::after { bottom:1px; top:auto; }
+
+@media screen and (min-width:992px) {
+ #forkongithub {
+ position:fixed;
+ display:block;
+ top:0;
+ right:0;
+ width:200px;
+ overflow:hidden;
+ height:200px;
+ z-index:9999;
+ }
+ #forkongithub a {
+ color:#fff;
+ text-decoration:none;
+ font-family:arial,sans-serif;
+ text-align:center;
+ font-weight:700;
+ font-size:1.5rem;
+ line-height:3rem;
+ padding:5px 40px;
+ width:200px;
+ position:absolute;
+ top:50px;
+ right:-75px;
+ transform:rotate(45deg);
+ -webkit-transform:rotate(45deg);
+ -ms-transform:rotate(45deg);
+ -moz-transform:rotate(45deg);
+ -o-transform:rotate(45deg);
+ box-shadow:4px 4px 10px rgba(0,0,0,0.8);
+ box-sizing: content-box;
+ }
+ .bg-grey { background-color: #444 !important; }
+}
+
+
+#toc {
+ border: 0;
+ display: none;
}
@media (min-width: 1200px) {
- .hidden-lg {
- display: none !important;
- }
- tr.hidden-lg {
- display: none !important;
- }
- th.hidden-lg,
- td.hidden-lg {
- display: none !important;
+ #toc {
+ display: block;
}
}
-.visible-print {
- display: none !important;
+#toc ul {
+ text-transform: none;
+ white-space: nowrap;
+ padding-left: 5px;
+ line-height: 2.5;
}
-tr.visible-print {
- display: none !important;
+#toc .nav li a {
+ padding-right : 5px;
}
-th.visible-print,
-td.visible-print {
- display: none !important;
+#toc ul.sectlevel1 {
+ text-transform: uppercase;
}
-@media print {
- .visible-print {
- display: block !important;
- }
- tr.visible-print {
- display: table-row !important;
- }
- th.visible-print,
- td.visible-print {
- display: table-cell !important;
- }
- .hidden-print {
- display: none !important;
- }
- tr.hidden-print {
- display: none !important;
- }
- th.hidden-print,
- td.hidden-print {
- display: none !important;
- }
-}
\ No newline at end of file
+/* red hat tabzilla */
+.dropup {
+ right: 180px;
+}
+
+#toctitle {
+ visibility: hidden;
+}
diff --git a/docs/Scribble_Protocol_Language_Guide.pdf b/docs/Scribble_Protocol_Language_Guide.pdf
deleted file mode 100644
index 506b15a..0000000
Binary files a/docs/Scribble_Protocol_Language_Guide.pdf and /dev/null differ
diff --git a/docs/dev/developer-guide.html b/docs/dev/developer-guide.html
new file mode 100644
index 0000000..555c750
--- /dev/null
+++ b/docs/dev/developer-guide.html
@@ -0,0 +1,250 @@
+
+
+
+
+ Scribble - How to develop with Scribble
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
How to develop with Scribble
+
Developing with Scribble
+
+
+
+
+
+
+
+
+
+
Developing Scribble
+
+
+
Project Code
+
+
+
The organisation is divided into a number of git repositories. The main repositories currently are:
+
+
+
Scribble Java
+
+
The repository is located here .
+
+
+
This repository contains the core java code for the Scribble parser, validation, projection and monitoring capabilities.
+
+
+
+
Scribble Web
+
+
The repository is located here .
+
+
+
This repository provides the web tooling. The server side capabilities are implemented in java, with the UI implemented using AngularJS/Bootstrap.
+
+
+
+
+
Contributing to the Project
+
+
The best way to initially contribute to the project is to try out the tools and provide feedback by creating issues for feature requests or problems found.
+
+
+
The next step could be to provide contributions for the issues listed against any of the git repositories. These can be contributed as pull requests , which can then be reviewed by the project developers.
+
+
+
+
+
+
+
+
+Documentation for the older version of the tools can be found here .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..805fab3
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,195 @@
+
+
+
+
+ Scribble - Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Documentation
+
Documentation for Scribble
+
+
+
+
+
+
+
+
+
Documentation for Scribble
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/langref.html b/docs/langref.html
deleted file mode 100644
index 3ec5a68..0000000
--- a/docs/langref.html
+++ /dev/null
@@ -1,1169 +0,0 @@
-
-
-
- Scribble Language Reference
-
- Version 0.2
-
-
-
-
-
-
-
-
-
-
- Scribble Language Reference
-
- Version 0.2
- The Scribble team
-
-Contents
-
-
This document is the Scribble language reference. It defines the
-language syntax and conventions
-for Scribble protocols .
-It also defines the semantics of
-Scribble protocols
-in terms of event traces.
-Scribble syntax is specified using a BNF-like notation. Terminal
-symbols are in purple with typewriter
-font. Non-terminal
-symbols are in italic. Each grammar rule starts with a non-terminal (the name defined by the rule) and ::= .
- Parentheses ( ) are used for grouping grammar elements, square
-brackets [ ] for an optional element, vertical bar | for separating
- alternatives, and star * for zero or more repetitions of the preceding
-element. An ellipsis is used for choice of any single character from an
-inclusive range of ASCII characters, e.g. a … z means any lower case letter.
-
-1.2 TerminologyThis document uses the following terminology related to
-Scribble protocols.
-Principal
- An identifiable network entity that can function as a conversation endpoint.
- Conversation
- A communication session between principals. Role A role is an abstract principal inside a
-conversation. It represents one endpoint of this conversation.
- Global protocol
- A global protocol is an abstract specification of a conversation. It
-specifies the communication between roles from a global (neutral)
-perspective.
Local protocol
- A local protocol specifies the local behaviour of a role (i.e. from the perspective of that role).
-
-Message
- A unit of communication between
- principals in a conversation. Network
- The
- interconnect between principals responsible for message delivery.
- Message dispatch
- The event of
- a principal
- committing
- a message to the network for delivery.
- Message delivery
- The
- event of delivering a dispatched message to the
- target principal.
- Message consume
- The event of a principal
- consuming a message delivered by the network.
-
-This section specifies the lexical structure of the Scribble language.
-2.1 White SpaceWhite
- space is defined as the ASCII space and horizontal tab characters, and
-line terminators (ASCII LF, CR or CRLF). White space in Scribble
-protocols serves only to delimit lexical tokens.
-
-2.2 CommentsBlock comments are opened by /* and closed by
-*/ . Single-line comments start from //
- and end at the first line terminator.
-Comments do not nest. Block comments have no special meaning within a
-single-line comment and vice versa. Comments delimit lexical tokens
-similarly to white space.
-2.3 IdentifiersAn identifier is a sequence of ASCII letters, digits and the _ character that does not start with a digit.
-Identifiers cannot be among the reserved keywords . Identifiers should not be longer than 256 characters.
-The following character sequences are reserved
-as Scribble keywords.
-They cannot be used as identifiers or message operators .
and as at by catch
-choice continue create do enter
-from global import instantiates interruptible
-local or par protocol rec
-role spawns throw to with
-
-
-This chapter
-specifies
-the syntax of the Scribble language.
-3.1 Packages and Modules
-The Scribble package hierarchy is a tree of package nodes. Leaf nodes are modules , which are Scribble source files. Non-leaf nodes are simply called packages , which may contain other packages and modules as subpackages .
- Scribble packages correspond to directories on the file system, with
-subpackages nested inside their parent package directories.
-
Every package has a simple package name and a fully qualified package name . The simple package name is an identifier . The fully qualified package name
-(package-name )
-is a dot-separated sequence of simple package names, where each identifier
- in the sequence denotes a package that is a direct subpackage of the
-preceding package, starting from the root package and ending with its
-simple package name.
-A
-Scribble module is a leaf package .
-A module is a text file with four parts: a package declaration , an optional list of
-import declarations , a list of zero or more payload type declarations ,
-and a list of zero or more protocol declarations .
-The start symbol of the grammar for
-the contents of a Scribble module
-is
-module :
-
A module starts with a package declaration that specifies the fully qualified package name of the module.
The filename of the module is required to be the simple package name appended with the suffix .spr .
-3.1.3 I mport Declarations
The first case is called a module import .
-The package-name
-specifies the fully qualified package name of the module to import.
-The second case is called a module member import .
-The package-name specifies the fully qualified package name of the module to import from,
-and the first identifier specifies a module member name , which together specify the imported member . The second identifier in the module member import is an optional alias by which the imported member may be referred to within the current module.
Module
- files must be situated within the package directory to which they
-belong. Package directories must be nested according to their subpackage
- structure.
-When a module is imported, the Scribble tool searches the locations specified in the Scribble import path for the source file. The tool does so by looking for a file of the same simple name appended with .spr
- in the subdirectory corresponding to the module’s package from each of
-the base directories in the import path.
-The import path is specified as an argument to the tool. The tool
-searches the import path in order and uses the first match that it
-finds. If the tool is unable to find the module, the tool will terminate
- with an error.
-3.1.4 M odule Members and VisibilityThe members of a module are the payload types and protocols declared in the module.
-Like packages, module members have simple member names and fully qualified member names .
- The simple member names of payload types and protocols are declared by
-the corresponding payload type and protocol declarations. The fully
-qualified member names are given by the fully qualified package name of the module to which the member belongs, appended with a dot (. ) and the simple member name.
The
-payload types and protocols
-that are visible within a module are:
- the members of that module, when either referred to by either their simple or fully qualified member names; the members of all imported modules, when referred to by their fully qualified member names;
- the imported members, when referred to by either their simple or fully
-qualified member names if no alias is specified, or when referred to by
-their alias if one is specified.
-
-3.2 P ayload Type DeclarationsA payload type represents the data carried as a payload by a Scribble message.
-
Payload types are declared by the keyword type . The first identifier
-in angle brackets specifies a message schema type (e.g. YSD), and the following extidentifier specifies the name
-of the payload type to be imported from an external message schema.
-The format of the payload type name will depend on the specified schema type.
-The second extidentifier specifies the filename of the schema source file from which the payload type is to be imported.
-The
-final identifier
-specifies the alias
-by which the payload type should be referred to within the
-current module .
-
When a payload type is declared, the Scribble tool searches for the specified file on the Scribble payload type path .
- The payload type path is specified as an argument to the tool. The tool
- searches the payload type path in order and uses the first match that
-it finds. If the tool is unable to find the payload type, the tool will
-terminate with an error.
-3.2.1 Visible Payload TypesThe payload types that are visible within a module are the declared payload types when referred to by their aliases.
-3.3 M essage SignaturesA Scribble message signature comprises an operator header and an optional comma-separated list of payload types .
A message operator is a (possibly empty) sequence of letters, digits and the ASCII
-underscore character. An operator cannot be among the reserved
-keywords . The payload of the message is specified by the optional
-group inside the parentheses.
-The optional identifier in a payload type is a annotation that associates a variable name to the payload. If present, the annotation is followed by a colon. The mandatory identifier is the data type of the payload.
-The data type must be a visible payload type .
-3.4 P rotocol DeclarationsA protocol declaration is either a global protocol declaration or a local protocol declaration .
-3.5 G lobal ProtocolsA global protocol declaration has the following syntax.
A global protocol declaration starts with the keywords global
-protocol . It is followed by a name for the protocol, a role list
-and an optional parameter list. A role list is a comma-separated list
-of identifiers each preceded by the
-keyword role . A parameter list is a comma-separated list of
-identifier s each preceded by the keyword sig (this sig
-specifies the kind of entities we are abstracting, here meaning
-a message signature: other kinds such as payload types
-may be included in later versions).
The global protocol declaration then either ends with
-a global protocol body, or the instantiates keyword followed by
-an identifier . The identifier in the latter case specifies the name of the
-parent global protocol being instantiated.
-3.5.1 G lobal Interaction Blocks and SequencesThe body of a global protocol declaration is a global interaction
-block . A global interaction block is a global interaction sequence enclosed by
-curly braces { } .
A global interaction sequence is
-a possibly empty sequence of global interactions : point-to-point message transfer , choice , parallel , recursion and continue .
-3.5.2 P oint-to-Point Message TransferA point-to-point message transfer
-specifies the communication of a single message between two roles.
A message transfer starts with a message-signature or an identifier declared as a generic message parameter . The
-role-name immediately after the from keyword specifies the sender of the message. The
-role-name after the to keyword specifies the receiver.
-The choice construct specifies that one role chooses one out of a set
-of interaction blocks for the protocol to follow. The choice of
-an interaction block is mutually exclusive; the conversation follows
-exactly one interaction block.
A choice starts with the keywords choice at ,
-followed by a role-name designating the role responsible for the choice.
-This is followed by a list of global interaction blocks separated by the keyword
-or . The interaction block list cannot be empty.
-The parallel construct specifies a set of interactions that can
-happen concurrently.
A parallel starts with the keyword par ,
-followed by a list of global interaction blocks separated by the keyword
-and . The interaction block list cannot be empty.
-The recursion construct is used to specify loops in the control flow of a protocol.
A
-recursion point is specified by the keyword rec and an identifier
-label for this point.
-Within the following global interaction block, the keyword
-continue followed by a recursion point identifier specifes that the control flow of the protocol should
-return to that point.
-3.5.6 I nterruptibleThe interruptible construct specifies a sequence of interactions that may be interrupted by the specified roles.
-A raised interrupt is
-communicated
-to all other
-roles
-in the conversation. On raising or receiving an interrupt, the role
-exits the interruptible block, activating the subsequent action(s).
-In the present version, this means the endpoint will exit
-the conversation.
An interruptible starts with the keyword interruptible followed by a global
-interaction block. This is followed by a list of the keyword with , each followed by a message signature and a global interaction block.
-...visibility...
The do construct specifies that
-the interactions specified by another protocol (called the target protocol )
-should be performed
-inline with the current conversation. Note that the Scribble do construct should not be confused with do statements found in other languages,
-such as for performing loops or for performing a sequence of
-imperative actions.
A do
-starts with the keyword do
-followed by the name of the target protocol, a
-an optional argument list and a role instantiation list, and is terminated by a semicolon.
The protocol identifier should correspond to a known protocol. The parameter list and role list in the definition of the
-target protocol must respectively be of the same length as the argument list and role instantiation list present in the
-do construct.
-For each R 1 as R 2 element where specified, where R 1 and R 2 are role-name s, in the role instantiation
-list, R 1 must be a role of the current protocol and
-R 2 a role of the target protocol.
-
-The spawn construct specifies that
-an external conversation should be spawned
-to perform
-the interactions specified by another protocol (called the target protocol ).
A spawn
-starts with the name of the role performing the call followed by the keyword spawns ,
-followed by the name of the target protocol, a
-an optional argument list and a role instantiation list, and is terminated by a semicolon.
The protocol identifier should correspond to a known protocol. The argument list in the definition of the
-target protocol must be of the same length as the argument list present in the
-spawn construct.
-For each R 1 as R 2 element, where R 1 and R 2 are role-name s, in the role instantiation
-list, R 1 must be a role of the current protocol and
-R 2 a role of the target protocol.
-3.6 Local ProtocolsA local protocol declaration has the following syntax.
A local protocol declaration starts with the keywords local
-protocol . It is followed by a name for the protocol, the name of the local
-role, a list of roles
-and a local protocol body. The role list is a comma-separated list of
-identifiers each preceded by the keyword role .
-3.6.1 Local Interaction Blocks and SequencesThe body of a local protocol declaration is a local interaction block . A
-local interaction block is a local interaction sequence enclosed by curly
-braces { } .
A local interaction sequence is
-a possibly empty sequence of local interactions : send and receive message transfer , choice , parallel , recursion and continue .
-interruptible
-3.6.2 P oint-to-Point Message TransferA local message transfer is either a send or a receive of a message to or
-from a role.
Both send and receive start with a message-signature . The
-role-name immediately after the from keyword specifies the sender of
-the message that has to be sent. The
-role-name after the to keyword specifies the receiver of a message that
-is expected to be received.
-The
- choice construct specifies that one role chooses one out of a set of
-interaction blocks for the protocol to follow. The choice of interaction
- block is mutually
-exclusive; the conversation follows exactly one interaction block.
A choice starts with the keywords choice at ,
-followed by a role-name designating the role responsible for the choice.
-This is followed by a list of global interaction blocks separated by the keyword
-or . The interaction block list cannot be empty.
-The parallel construct specifies a set of interactions that can
-happen concurrently.
A parallel starts with the keyword par ,
-followed by a list of global interaction blocks separated by the keyword
-and . The interaction block list cannot be empty.
-The recursion construct is used to specify loops in the control flow
-of a protocol.
A
-recursion point is specified by the keyword rec and an identifier
-label for this point.
-Within the following global interaction block, the keyword
-continue followed by a recursion point identifier specifes that the control flow of the protocol should
-return to that point.
-3.6.6 I nterruptibleThe interruptible construct is used to specify the
-interrupts that can be thrown or caught within an interaction block.
An interruptible starts with a keyword interruptible followed by a local
-interaction block specifying the main behaviour. This is followed by either a list of the keyword
-throw or the keyword catch , each followed by a message signature.
-
-3.6.7 P rotocol Creation and
-EntranceThe create construct is used to specify the creation part of the call
-to another external protocol. The enter construct, its counterpart, is
-used to specify joining a newly created external protocol. Both
-constructs are the projection of the global calls construct.
A protocol creation is specified by the word create , the
-identifier of the protocol being created, a parameter list and an
-instantiation list.
A protocol entrance is specified by the word enter , the
-identifier of the protocol being joined, the word as and the
-role played inside the external protocol.
-Chapter 4 W ell-Formed Protocols...annotations...
This chapter describes the conditions for Scribble protocols to be
-well-formed , i.e. giving meaningful protocols, beyond the basic
-syntax defined by the language grammar. This is necessary because some
-of the protocols are unsafe or inconsistent even if they follow the
-grammar (for example, two parallel interactions from the same sender
-to the same receiver with the same message signature violates
-linearity and leads to a confusion at the receiver). Therefore,
-understanding well-formendess is also useful for writing safe
-protocols. In the following we outline key conditions for
-well-formedness, which will be enough for most protocols.
It is notable that you can check the well-formedness of your protocols
-by validating your protocols by the Scribble tool: therefore, you can
-also come back to this section when you try out your protocol and
-it is refused by the provided Scribble tool.
-4.1 Global ProtocolsA well-formed Scribble global protocol observes the following conditions.
-4.1.1 General Conditions
-Syntax Conditions
-Roles in the protocol declaration should be distinct.
-All payload types should be imported before being used.
- In protocol declarations, Any role appearing inside the global
-interaction block must have been previously declared in the global
-protocol signature.
-
-Name Conditions
-Unless specified otherwise, multiple bindings to a same name are
-authorised, although only the last definition in scope counts.
-
-4.1.2 Local Choice ConditionsIn a choice , of the form choice at A
- block 1 or … or block n , the
-following conditions should be satisfied.
-There should be strictly more than one block: n > 1. For 0<i ≤ n , in each block i , A should send the
-first message. All the other participants appearing in the block should
-appear first as receivers, before possibly be senders. Any participant B , different from A , receiving a message in
-block i , should also be receiving a message in all other
-blocks. The messages received by B in the other blocks should however
-be distinct if B ’s following actions are different. The messages that A sends should be different in each block.
-
-4.1.3 Parallel Conditions
-Linearity In a parallel , of the form par block 1 and
-… and block n , the following conditions should be
-satisfied.
-There should not be any continue in any of the
-block i , unless the recursion is also defined in the
-same block block i .
- If, in block i , there is a message with label
-msg is send by A to B , then such a
-message cannot appear in any other block j .
-
-4.1.4 Recursion Conditions
-Name Conditions
-A continue , of the form continue label ,
-should only appear in a recursion block introduced by rec
- label . If a continue label is within several
-nested rec label blocks, it refers to the inner most
-one.
-
-4.1.5 Interruptible Conditions
-Nothing should follow an interruptible block. If an
-interruptible block appears in a global-interaction-sequence , then
-it is in the last element. All interrupt messages should be sent from the same role. No continue should appear inside an interruptible block
-unless it is inside a matching recursion block.
-
-4.1.6 Spawn Conditions
-Recursive Spawns
-A spawns A spawns Prot …
-must not occur inside the Prot protocol.
-
-Role Conditions
-In every spawns A spawns
-Prot rolelist , A must appear in
-rolelist .
-
-This chapter describes
-a denotational semantics
-for the Scribble language.
-The semantics is given by the communication model .
-5.1 C ommunication ModelThe
-communication model
-prescribes a denotational semantics for
-Scribble protocols.
-The communication model
-correlates each
-(well-formed )
-protocol with a set of sequences
-(traces )
-of communication events
-that are deemed valid for the protocol.
-The communication model is asynchronous , meaning that the event of sending a message is
-decoupled from the corresponding receive event,
-but message order is preserved
-between each pair of roles in a conversation.
-5.1.1 C ommunication EventsIn the
-communication model ,
-a distributed system that implements a
-Scribble protocol consists of principals communicating via a
-network .
-Three kinds of communication events (simply called events for short) are modelled: message dispatch , delivery and consume . These events represent the actions, either performed by a principal (consume and
-dispatch ) or the network itself (delivery ),
-involved in
-the transfer of a message from the sender to the receiver.
-The formulation of the communication model is intended to cater for diverse Scribble Runtime and network implementations.
-
-
-
-
-
-
Figure 5.1: The three kinds of communication events in the communication model
-
-
Figure 1
-depicts a network configuration that supports conversations between three principals.
-Assume that the lower and the right-hand principals are
-engaged in
-a conversation.
-The red arrows illustrate the three kinds of events:
-
-Dispatch . A principal commits an outgoing message, addressed
-to the receiver, to the network.
- Delivery .
- The network delivers a dispatched message to the target principal.Consume . A principal consumes a message delivered by the
-network.
-A Scribble protocol
-imposes
-constraints on the events and the order in
-which they can occur during a conversation
-instance of the protocol.
-The communication model expresses these constraints by defining the
-execution traces of events that are valid for the protocol.
-
-Notation for Events
- The following notation is used for communication
- events. Each event
- specifies the source
- role, the target role and the
- message signature of the
- message involved in the event.
-
-A!B:op(T) Dispatch event,
-by a principal playing source role A , of a message of
-signature op(T) , addressed to the principal playing the
-target role B .
- A>B:op(T)
-Delivery event by the network of a message of signature op(T) , dispatched by the principal playing source role A , to the principal playing the target role B .
- B?A:op(T) Consume event, by
-the principal playing target role B , of a message of
-signature op(T) , dispatched by the principal playing the
-source role A .
- The source role of a dispatch or consume event is also called the subject of the event.
-5.1.2 C ommunication Event Traces
-
A communication event trace (event trace , or simply trace , for short) is a finte sequence of
-events . The communication model
-associates a
-Scribble protocol with a (possibly infinite) set of traces called the
-event trace set (trace set for short). Each trace in
-the trace set
-represents an execution order of events that is valid
-for the
-protocol, i.e. the trace may be exhibited by a system in which the
-conversation principals conform to the protocol according to their
-roles.
-
-N otation for Traces and Trace Sets
-A trace t consisting of the event sequence
-e 1 , e 2 , …, e i , … is
-written [e 1 , e 2 , …, e i , …].
- The notation [e i ]1 ≤ i ≤ n with
- n ∈ ℕ
- is also used for a sequence of n events.
- The empty trace, i.e. the trace with no events in its sequence, is denoted by є. A trace set T consisting of the traces
- t 1 , t 2 , …, t n , …
- is written {t 1 , t 2 , …,
- t n , …}.
- The length of a trace is the number of events in its sequence.
-O perations on Traces
-Concatenation.
- The concatentation of two event traces
-t and t’ , written
-t · t’ , is defined as the trace given
-by appending the event sequence of t’ after that of t .
- Safe transposition.
- Trace t 2 is a transposition of
-trace t 1 whenever t 1 = [e i ]1 ≤ i ≤ n and
-t 2 = [e i ]1 ≤ i < j ·
-[e j +1 , e j ] · [e i ]j +2 ≤ i
-≤ n with 1 ≤ j < n .t 2 is an unsafe transposition of t 1 whenever, additionally:
- e j is a dispatch
-or consume event and e j +1 is a dispatch or consume event with the same subject;
- e j = A>B:op(T) and e j +1 = A>B:op’(T’) ;
- e j = A!B:op(T) and e j +1 =
-A>B:op(T) ; e j = A>B:op(T) and e j +1 =
-B?A:op(T) .
A transposition that is not unsafe is a safe transposition. Note that unsafe, and hence safe, transposition is not symmetric.
-
Safe permutation.
- Trace t 2 is a safe
-permutation (or simply permutation ) of trace t 1
-when:
- t 1 is of the same length as t 2 ; there exists a finite sequence of traces
-(t’ k )1 ≤ k ≤ m such that t’ 1 = t 1 ,
-t’ m = t 2 and ∀ k , 1 ≤ k ≤ m ,
-t’ k +1 is a safe transposition of t’ k . Note that pemutation is not symmetric.
-
-O perations on Trace Sets
-Permutation-closure.
- A trace set T is
-permutation-closed whenever t 1 ∈ T and t 2 is a
-permutation of t 1 implies t 2 ∈ T . The
-permutation-closure of a trace set T , written
-Π(T ), is the smallest permutation-closed trace set
-containing T . Note that the permutation-closed trace sets,
-with standard set inclusion as an order relation and standard set union
-and intersection as join and meet, form a complete lattice.
Shuffling.
- The shuffling of two traces t 1 and t 2 , written t 1 w t 2 , is
- inductively
- defined as:
-
- if t i = є then {t 3−i } = t 1 w t 2 ;
- otherwise t 1 = e 1 ·t 1 ′, t 2 = e 2 ·t 2 ′ and
-t 1 w t 2 =
- {e 1 .t ′ | t ′ ∈ t 1 ′ w t 2 } ∪ {e 2 .t ′ | t ′ ∈ t 1 w t 2 ′}.
-
The shuffling of two trace sets T 1 , T 2 , written T 1 w T 2 , is the trace set
- given by
- ∪(t 1 w t 2 ) for all t 1 ∈ T 1 and t 2 ∈ T 2 .
-5.2 Global Interaction SemanticsThe denotation of a global-interaction , global-interaction-sequence , global-interaction-block or a global-protocol-decl is written D (g ), where g belongs to one of the aforementioned syntax categories. The denotation is the trace set
-representing all the execution orders of events that are valid according to
-the
-specified protocol or protocol fragment. Two variants of the D (g ) notation are also used:
-
- D • (g ) is called the • -denotation , and D X (g ) the
-X -denotation ,
-of the syntax g .
-The X -denotation is used in the treatment of protocol recursion to parameterise the denotation by
-an identifier label.
-
-5.2.1 Global Protocol Declaration and Global Interaction BlockThe denotations of global-protocol-decl and global-interaction-block are defined in the table below. The denotations of global-interaction-sequence and the global-interaction constructs are defined in the following subsections.
-5.2.2 I nteraction SequenceA global-interaction-sequence is a (possibly empty) list of global-interaction elements.
-The denotation of an interaction sequence s , D • (s ), is defined as:
- if s is the empty sequence, then D • (s ) = {є }; otherwise, s is a global interaction i followed by a (possibly empty) interaction sequence s ’ . Then the •-denotation of s is the
-permutation-closure of the trace set given by recursively concatenating
-to traces in the •-denotation of i ,
-the traces in the •-denotation of
-s ’ . Formally: D • (s )
-= Π({t · t’ | t ∈
-D (i ), t’ ∈ D • (s ’ )})
-
-5.2.3 P oint-to-Point Message TransferRecall the syntax of the point-to-point message transfer , which belongs to the global-interaction syntactic category:
The denotation of a message transfer
MsgSig from Sender to Receiver ;
is defined as the trace set :
{[Sender!Receiver:MsgSig ,
-Sender>Receiver:MsgSig ,
-Receiver?Sender:MsgSig ]}.
-
Formally:
D • (M from R to R’ )
-=
- {[R!R’:M ,
-R>R’:M ,
-R’?R:M ]}
-
Note that the denotation is permutation-closed by definition.
-Recall the syntax of the choice construct, which belongs to the
-global-interaction syntactic category:
The •-denotation of a choice
choice at
-R b 1 or
-… or b n
-
is defined as union of the
-•-denotations of the global interaction blocks b i for 1 ≤ i ≤ n . Formally:
D • (choice at R b 1 or … or
- b n ) =
- ∪i = 1..n D • (b i )
-
Note that the permutation-closure of each D • (b i ) implies the permutation-closure of the denotation of the choice.
-
-Recall the syntax of the parallel construct, which belongs to the
-global-interaction syntactic category:
The •-denotation of a parallel
par
- b 1 and …
- and b n
-
is defined as the
-shuffling of the •-denotations of
-the global interaction blocks b i for all 1 ≤ i ≤ n . Formally:
D • (par b 1 and …
- and b n ) =
- D • (b 1 ) w … w D • (b n )
-
Note that, by the definition of shuffling, the permutation-closure of each D • (b i ) implies the permutation-closure of the denotation of the parallel.
-
-Recall the syntax of the recursion and continuation constructs, which
-belong to the global-interaction syntactic category:
The •-denotation of a recursion
rec X
- b
-
comprises the traces in the
-•-denotation of the block b , along with the traces in the X -denotation of b (i.e. the traces that flow through a continue specifying X ) concatenated,
-recursively, with traces in the •-denotation of the recursion.
Formally, the •-denotation of a recursion is defined as the permutation-closure of the least fixed point of the generator function F •, X , i.e.
D • (rec X b ) = Π(fix F •, X )
-
where F is the following function over permutation-closed trace sets:
F •, X = T ↦ D • (b ) ∪
-Π({t’ · t | t ∈ T , t’
-∈ D X (b )})
-
The •-denotation of a continue is defined, for some identifier label X , as:
D • (continue X ; ) = {є } if • is X ;
- D • (continue X ; ) = ∅ otherwise.
-
-
-5.2.7 I nterruptibleThe pre-denotation of a global interaction block b , written D pre • (b ), where b contains the global interaction sequence s , is
-given by:
- if s is the empty sequence, then D pre • (s ) = {є }; otherwise D • (i , s
- ’ ) = Π({t ·
-t’ | t ∈ D (i ), t’ ∈
-D • (s ’ )}) ∪ D • (i ).
- Note that D pre • (b ) is the same as D • (b )
- except for interactions sequences, in which case the pre-denotation
-additionally includes the denotations of the sub-sequences that are
-syntactic prefixes of s .
Recall the syntax of the interruptible construct, which
-belongs to the global-interaction syntactic category:
-
-Assume that the roles that occur in the global-interaction-block of the interruptible are
-R 1 ,…,R m . The denotation is •-denotation of the interruptible is given by:
D • (interruptible b by r 1 with I 1 ,…,
-r n with I n ) =
-{t =Π(t 1 · Int (r i ,I i ))|
-t 1 ·t ′1 ∈ D pre • (b ) ∧
-Correct (t ) ∧ i ∈ {1,…,n }}
with (supposing r i = R j ) Int (r i ,I i ) defined as:
r i ! R 1 : I i , r i > R 1 : I i ,
-R 1 ? r i : I i ,…,r i ! R j -1: I i ,
-r i > R j -1: I i ,
-R j -1? r i : I i ,r i ! R j +1: I i ,
-r i > R j +1: I i ,
-R j +1? r i : I i ,…,
-r i ! R m : I i , r i > R m : I i ,
-R m ? r i : I i
and Correct (t ) defined as the following predicate:
-if t =
-t 1 ·r i ! R 1 : I i ·t 2 , then
-for each event e in t 2 , if the subject of
-e is r i , then there exists k s.t. e =
-r i ! R k : I i ;
- if t =
-t 1 ·R k ? r i : I i ·t 2 , then
-for each event e in t 2 , the subject of
-e is not R k .
-
-Recall the syntax of the do construct, which
-belongs to the global-interaction syntactic category:
The •-denotation of a do
do p < op 1 (Arg 1 ) , … , op n (Arg n ) > ( R 1 as R 1 ′ , … , R n as R n ′ ) ;
-
where p is the name of the target protocol , is the
-•-denotation of p with the roles R 1 ′, …, R n ′ in p substituted for R 1 , …, R n and the parameters
-identifier 1 , …identifier n
-in p substituted for op 1 (Arg 1 ) , …, op n (Arg n ) .
-We use the refined semantics by annotating the denotation with the
-session-id:
D s • (b ) =
-{s :e 1 , …, s :e n |
-e 1 ,…,e n ∈ D • (b )}
We recall the syntax for spawn:
Supposing Prot is defined with global protocol Prot <
-arg > (role r ′1 … role r ′n ) :
-
D s • (R calls Prot < par >
-(r 1 as r ′i 1 ,…,r m as r ′i m )
-)= {
-Π(Invit (R ,{(r 1 ,r ′i 1 ),…,(r m ,r ′i m )},k )·t )| t ∈
-D k • (Prot ){par /arg }{r 1 /r ′i 1 }…{r m /r ′i m }, k fresh
-}
with Invit (R ,{(r 1 ,r ′i 1 ),…,(r m ,r ′i m )},k )
-defined as (supposing R = r j ):
-
R ! r 1 : k ,
-R > r 1 : k ,
-r 1 ? R : I i ,…,R ! r j -1: k ,
-R > r j -1: k ,
-r j -1? R : k ,R ! r j +1: k ,
-R > r j +1: k ,
-r j +1? R : k ,…,
-R ! r m : k , R > r m : k ,
-r m ? R : k
-5.3 Local Interaction Semantics– similar setup to global traces
-5.4 Global-to-Local Protocol Projection– trace filtering
-
-
-
-This document was translated from LA TE X by
- H E V E A .
-
-
\ No newline at end of file
diff --git a/docs/langref_files/ConversationCommunicationmodel.png b/docs/langref_files/ConversationCommunicationmodel.png
deleted file mode 100644
index abf4004..0000000
Binary files a/docs/langref_files/ConversationCommunicationmodel.png and /dev/null differ
diff --git a/docs/overview/getting-started.html b/docs/overview/getting-started.html
new file mode 100644
index 0000000..0d2164c
--- /dev/null
+++ b/docs/overview/getting-started.html
@@ -0,0 +1,215 @@
+
+
+
+
+ Scribble - Getting Started
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Getting Started
+
How to get started with Scribble
+
+
+
+
+
+
+
+
+
Getting Started with Scribble.
+
+
+
+
module example;
+
+type <xsd> "{http://www.acme.com/types}Greetings" from "http://www.acme.com/types/Greetings.xsd" as Greetings;
+type <xsd> "{http://www.acme.com/types}Compliments" from "http://www.acme.com/types/Compliments.xsd" as Compliments;
+type <xsd> "{http://www.acme.com/types}Salutations" from "http://www.acme.com/types/Salutations.xsd" as Salutations;
+
+global protocol HelloWorld(role Me, role World) {
+ hello(Greetings) from Me to World;
+ choice at World {
+ goodMorning(Compliments) from World to Me;
+ } or {
+ goodAfternoon(Salutations) from World to Me;
+ }
+}
+
+
+
+
A very simply example, but this illustrates the basic syntax for a hello world interaction, where a party performing the role Me sends a message of type Greetings to another party performing the role 'World', who subsequently makes a decision which determines which path of the choice will be followed, resulting in a goodMorning or goodAfternoon message being exchanged.
+
+
+
Working on Scribble source
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/scribble-java.html b/docs/scribble-java.html
new file mode 100644
index 0000000..1eba5c5
--- /dev/null
+++ b/docs/scribble-java.html
@@ -0,0 +1,3816 @@
+
+
+
+
+
+
+ Scribble-Java tutorial
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Scribble-Java tutorial
+
+
+
+
+
+ This is a tutorial for using the Scribble-Java toolchain (for Scribble version 0.4).
+
+
+
+
+
+
+
+
+
+ Contents:
+
+
+
+
+
+ About this tutorial
+
+
+
+
+
+ Quick Start: the Adder application protocol
+
+
+ Protocol overview
+
+
+ Scribble global protocol
+
+
+
+ An Adder client
+
+
+
+ An Adder server
+
+
+
+
+
+
+
+
+ Scribble modules and global protocols
+
+
+ Scribble modules
+
+
+ Message signatures
+
+
+ Global protocol declarations
+
+
+ The message interaction statement
+
+
+ The choice statement
+
+
+
+ The do statement
+
+
+
+
+
+
+
+
+ Further global protocol features
+
+
+ Message signature name declarations
+
+
+ The connection interaction statement
+
+
+
+
+
+
+
+
+ Scribble protocol validation
+
+
+ Valid global protocols and well-formed modules
+
+
+ Characteristics of Endpoint FSMs
+
+
+ Safety and liveness of Scribble global protocols
+
+
+
+
+
+
+
+ Endpoint API generation
+
+
+ Endpoint API overview
+
+
+ Names as singleton types
+
+
+ State Channel API
+
+
+ Output state API
+
+
+ Receive state API
+
+
+ Accept state API
+
+
+ Disconnect state API
+
+
+ Linear usage of state channel instances
+
+
+
+
+
+
+
+ Endpoint implementation using Scribble-generated APIs
+
+
+ Connection establishment for non-explicit global protocols
+
+
+ Usage contract of Endpoint APIs and endpoint implementation safety
+
+
+
+
+
+
+
+ Building/installing Scribble-Java
+
+
+
+
+
+ Running the Scribble-Java command line tool
+
+
+
+
+
+
+
+
+
+
+
+ Scribble-Java is a toolchain for programming distributed applications in Java based on the theory of multiparty session types .
+
+
+
+ The main input and output of the toolchain are:
+
+
+
+
+
+
+
+ Useful links and resources
+
+
+
+
+
+ Scribble home page
+
+
+
+ N.B. some of the tools currently available from
+the home page are for an older version of Scribble than presented in
+this tutorial. Those include:
+
+
+
+ Eclipse integration
+
+
+ Message trace simulation
+
+
+ Browser based tooling
+
+
+
+
+
+
+ Scribble-Java open source repository: GitHub
+
+
+
+ Some Scribble protocol and Java endpoint program examples: GitHub
+
+
+
+
+
+
+
+
+
+ Tutorial version history
+
+
+
+
+
+
+ 0.4b
+
+
+ (Draft) revision for Scribble 0.4.
+
+
+
+
+
+
+
+
+ Upcoming in future tutorial versions
+
+
+
+
+
+ Scribble language:
+
+
+
+ Payload type and message signature name parameters for global protocol declarations
+
+
+ Messages in connection interaction statements
+
+
+
+
+ Endpoint API generation:
+
+
+
+ Branch callback API
+
+
+ Accept-branch API
+
+
+ Receive state futures
+
+
+ Abstract I/O state interfaces
+
+
+
+ Choice subtype interfaces
+
+
+
+
+
+
+ Host languages:
+
+
+
+ Scribble-Scala
+
+
+
+ Multiparty session delegation
+
+
+
+
+
+
+
+
+
+
+ Upcoming in future Scribble versions
+
+
+
+
+
+ Scribble language:
+
+
+
+ Protocol annotations
+
+
+
+ Message value assertions
+
+
+ Dynamic port actions (binary shared channel passing)
+
+
+
+
+
+
+ Endpoint API generation:
+
+
+
+ State name annotations
+
+
+ Event-driven API
+
+
+
+
+ Scribble Runtime API:
+
+
+ Additional transports: shared memory, HTTP
+
+
+
+
+ Host languages:
+
+
+
+ Scribble-Go
+
+
+
+ Role parameters for global protocol declarations
+
+
+
+
+
+
+
+
+
+
+ <
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ This quick start will run through the specification of a simple
+application protocol in Scribble, to Java implementations of client and
+server endpoints using the Scribble-generated APIs.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ We illustrate a client-server protocol for a network service that adds two numbers.
+
+
+
+ An outline of the protocol:
+
+
+
+ The client C may choose to send to the server S one of the following two messages.
+
+
+ An Add message with a payload of two Int s.
+
+
+
+ After receiving the Add , S sends to C a Res message with a payload of one Int (the sum of the received Int s).
+
+
+ Then C and S continue by "looping" back to the start of the protocol.
+
+
+
+
+ A Bye message with an empty payload.
+
+
+
+ The protocol ends for C after sending.
+
+
+ The protocol ends for S after receiving.
+
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Below we give a Scribble specification of the Adder application protocol.
+
+
+
+ This code is available from the Scribble GitHub repository:
+
+
+
+
+
+
+ Adder.scr
+
+ Lst. 2.1: Scribble specification of the Adder application protocol.
+
+
+
+ module tutorial . adder . Adder ; type <java> "java.lang.Integer" from "rt.jar" as Int ; global protocol Adder ( role C , role S ) { choice at C { Add ( Int , Int ) from C to S ; Res ( Int ) from S to C ; do Adder ( C , S ); } or { Bye () from C to S ; } }
+
+
+
+
+ We use the above example to give a brief overiew of Scribble syntax. The links give further details of each element.
+
+
+
+ The payload type declaration
+
+ type <java> "java.lang.Integer" from "rt.jar" as Int;
+
+
+ declares java.lang.Integer as a Scribble payload type, Int , for use in this Scribble module.
+
+
+
+ In the global protocol declaration :
+
+ global protocol Adder(role C, role S) { ... }
+
+
+
+
+ Adder is the name of the protocol;
+
+
+ C and S are the two participants in this protocol.
+
+
+
+
+
+ The choice statement
+
+ choice at C { ... } or { ... }
+
+ states that the protocol proceeds according to one of the or -separated blocks.
+
+
+
+ In this example, C is the master role that decides which block to follow.
+
+
+ C communicates its decision to the slave S by the message passing in each case.
+
+
+
+
+
+ The message signature
+
+ Add(Int, Int)
+
+
+ specifies:
+
+
+
+ Add is the operator (i.e. , a label or header that identifies the message);
+
+
+ (Int, Int) is a payload of two Int s.
+
+
+
+
+ In the message passing statement:
+
+ Add(Int, Int) from C to S;
+
+
+
+
+ C is the sender , which asynchronously dispatches the specified message (i.e. , without blocking);
+
+
+ C is the receiver , which blocks until the message is received.
+
+
+
+
+
+ The do statement
+
+ do Adder(C, S);
+
+
+ allows a protocol to be defined in terms of other (sub)protocols . It is also used for recursive protocol definitions, as for Adder in this example.
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ The command given below assumes:
+
+
+
+
+
+ In a Linux, Cygwin/Windows, or Mac OS terminal, the command is:
+
+
./scribblec.sh scribble-demos/scrib/tutorial/src/tutorial/adder/Adder.scr -api Adder C -d scribble-demos/scrib/tutorial/src/
+
+
+
+
+ The above command performs the following tasks.
+
+
+
+ Checks that the Scribble module in Adder.scr is a valid Scribble module -- this means that every global protocol (i.e. , Adder ) in the module must be a valid Scribble protocol (which it is).
+
+
+ Generates the Java Endpoint API for implementing the C endpoint of the Adder protocol. The output is written to the directory specified by the -d argument.
+
+
+
+
+
+ See here for more information on using the command line tool.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ We use the Endpoint API generated in the previous step to summarise the key elements behind Scribble Endpoint APIs.
+
+
+
+ The Endpoint API is generated from a finite state machine (FSM) representation of the I/O actions to be performed in the protocol by the target role.
+
+
+ An Endpoint API comprises a family of Java classes
+ that represent the states of the protocol relevant to the target role,
+with methods for the I/O actions permitted in each state.
+
+
+
+
+
+ We then give an example implementation using the above Endpoint API.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Below is the endpoint finite state machine (FSM) for the C role in Adder .
+
+
+
+
+ Fig. 2.3.1: The FSM for C in Adder .
+
+
+
+
+
+
+
+
+
+
+
+ State 1 is the initial state .
+
+
+ State 3 is the terminal state .
+
+
+ The notation S!Add(Int, Int) denotes the action by C to send S
+ a message with the specified signature .
+
+
+
+ The directed edge labelled by the above action means that performing this action in state 1 transitions C from to state 2 .
+
+
+ The notation S?Res(Int) means C receives from S
+ a message of the specified signature .
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ So that they may be used as types in Java, Scribble generates the various role and operator names in the source protocol as singleton types . For the Adder protocol, Scribble generates the following singleton types as API constants:
+
+
+
+
+
+ Roles
+
+
+ C ,
+ S
+
+
+
+
+ Operators
+
+
+ Add ,
+ Res ,
+ Bye
+
+
+
+
+
+
+
+ The API generation renders each state in the Endpoint FSM as a Java class for a state-specific communication channel (which we call a state channel for short).
+
+
+
+ By default, Scribble names the state channel classes by a state
+enumeration. For example, the class for the initial state is named Adder_C_1 . The terminal state (if any) is generated as a specially named EndSocket class.
+
+
+ Each class is generated with methods to perform the I/O actions permitted at the corresponding state.
+
+
+ The return type of each method is the class generated for the successor state of the corresponding I/O action.
+
+
+
+
+
+ See here for an example Javadoc generated (by the standard javadoc tool) from the Scribble-generated API for C in Adder .
+
+
+
+ The following summarises the key state channel classes and their I/O methods.
+
+
+
+
Adder_C_1 (state
1 in the
FSM ).
+
+
+
+
+
+
+ Type
+
+
+ Method
+
+
+
+
+ Adder_C_2
+
+
+ send(S role, Add op, Integer arg0, Integer arg1)
+
+
+
+
+ EndSocket
+
+
+ send(S role, Bye op)
+
+
+
+
+
+
+ The S , Add and Bye parameter types are the generated singleton types.
+
+
+ The send methods are non -blocking, i.e. they return immediately after asynchronously dispatching the specified message.
+
+
+ Calling a generated I/O method returns a new instance of the successor channel class.
+
+
+
+
+
+
Adder_C_2 (state
2 in the
FSM ).
+
+
+
+
+
+
+ Type
+
+
+ Method
+
+
+
+
+ Adder_C_1
+
+
+ receive(S role, Res op, Buf<? super Integer> arg0)
+
+
+
+
+
+
+ Buf<T> is a utility class in the Scribble API.
+
+
+
+ It has a mutable field val of type T .
+
+ It has a public constructor Buf(T t) , which initialises val to t .
+
+
+
+
+ The receive method blocks until the message is received. It then writes the received Integer value to the val field of supplied Buf before returning a new instance of the successor channel class.
+
+
+
+
+
+
+
+ We explain the Endpoint API for S later. It features the API generation for non-unary receive (i.e. , branch ) states, which is not demonstrated by the API for C .
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Usage contract of Scribble-generated Endpoint APIs
+
+
+
+ Starting from an instance of the initial state channel, an endpoint implemention should proceed by calling one method on the current channel to obtain the next, up to the end of the protocol (if any).
+
+
+
+ Below we give an example implementation of a C endpoint in an application of Adder . We use the Scribble-generated API following the above usage contract. This client uses the Adder service to calculate the n -th Fibonacci number.
+
+
+
+ The full code is available from the Scribble GitHub repository:
+
+
+
+
+
+
+ AdderC.java
+
+ Lst. 2.3.1: Java implementation of a C endpoint in Adder using the Scribble-generated API.
+
+
+
+
+package tutorial . adder ; /* Imports omitted */ public class AdderC { public static void main ( String [] args ) throws Exception { Adder adder = new Adder (); try ( MPSTEndpoint < Adder , C > client = new MPSTEndpoint <>( adder , C , new ObjectStreamFormatter ())) { client . connect ( S , SocketChannelEndpoint :: new , "localhost" , 8888 ); int n = 10 ; System . out . println ( n + "th Fibonacci number: " + fibo ( new Adder_C_1 ( client ), n )); } } private static int fibo ( Adder_C_1 c1 , int n ) throws Exception { Buf < Integer > x = new Buf <>( 0 ); Buf < Integer > y = new Buf <>( 1 ); Buf < Integer > i = new Buf <>( 1 ); while ( i . val < n ) { Adder_C_2 c2 = c1 . send ( S , Add , x . val , y . val ); x . val = y . val ; c1 = c2 . receive ( S , Res , y ); c1 = add1 ( c1 , i ); } c1 . send ( S , Bye ); // EndSocket return x . val ; } private static Adder_C_1 add1 ( Adder_C_1 c1 , Buf < Integer > i ) throws Exception { return c1 . send ( S , Add , i . val , 1 ). receive ( S , Res , i ); } }
+
+
+
+
+
+ We summarise the key elements in the above code.
+
+
+
+ The main method contains a typical preamble for an implemention of a client endpoint using an Endpoint API.
+
+
+
+ A new session is created as an instance of the front-end Session Class :
+
+ Adder adder = new Adder();
+
+
+ The Session Class in this example, Adder , is part of the generated Endpoint API.
+
+
+ We create a session endpoint object for the role being implemented:
+
+ try (MPSTEndpoint<Adder, C> client =
+ new MPSTEndpoint<>(adder, C, new ObjectStreamFormatter())) { ... }
+
+
+
+
+ MPSTEndpoint<P, R> is a class in the base API of Scribble. It is parameterised on the generated API types designating the intended protocol, Adder , and the name of the target role, C .
+
+
+ The second constructor argument is an API constant of the generated type.
+
+
+
+
+ ObjectStreamFormatter ,
+ provided by the Scribble API, performs the serialization and
+deserialization of messages using the default Java object serialization
+protocol.
+
+
+
+
+ The MPSTEndpoint is first used to establish a connection to the server endpoint S .
+
+ client.connect(S, SocketChannelEndpoint::new, "localhost", 8888);
+
+
+ connect is the client-side operation for requesting a connection.
+
+
+
+ S is an API constant of the type generated for role name S .
+
+
+ SocketChannelEndpoint::new is a constructor reference to a TCP channel class provided by the Scribble API.
+
+
+ "localhost" and 8888 give the address of the S server.
+
+
+
+
+
+ After establishing the required connection(s), the MPSTEndpoint is finally used to create the initial state channel:
+
+ new Adder_C_1(client)
+
+
+
+
+
+
+ The fibo method contains the main body of the protocol implementation using the Endpoint API explained earlier. It takes the initial state channel, Adder_C_1 , and follows the protocol through to the terminal state channel, EndSocket , returned by c1.send(S, Bye) .
+
+
+
+ The fibo method uses the Add option of the Adder service to add the the values of x and y for the next Fibonacci number.
+
+
+ It also uses add1 method to increment the the i counter.
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ We give an example implementation of an S server for Adder . We highlight the features that are different or not shown in the example client implementation.
+
+
+
+ The full code is available from the Scribble GitHub repository:
+
+
+
+
+
+
+ AdderS.java
+
+ Lst. 2.3.2: Java implementation of a S endpoint in Adder using the Scribble-generated API.
+
+
+
+
+package tutorial . adder ; /* Imports omitted */ public class AdderS { public static void main ( String [] args ) throws Exception { try ( ScribServerSocket ss = new SocketChannelServer ( 8888 )) { while ( true ) { Adder adder = new Adder (); try ( MPSTEndpoint < Adder , S > server = new MPSTEndpoint <>( adder , S , new ObjectStreamFormatter ())) { server . accept ( ss , C ); new AdderS (). run ( new Adder_S_1 ( server )); } catch ( ScribbleRuntimeException | IOException | ClassNotFoundException e ) { e . printStackTrace (); } } } } private void run ( Adder_S_1 s1 ) throws Exception { Buf < Integer > x = new Buf <>(); Buf < Integer > y = new Buf <>(); while ( true ) { Adder_S_1_Cases cases = s1 . branch ( C ); switch ( cases . op ) { case Add : s1 = cases . receive ( Add , x , y ) . send ( C , Res , x . val + y . val ); break ; case Bye : cases . receive ( Bye ); return ; } } } }
+
+
+
+
+
+
+ SocketChannelServer is used to accept TCP connections. It is a concrete implementation of ScribServerSocket , provided by the base API of Scribble.
+
+
+
+ The MPSTEndpoint and SocketChannelServer are used to establish a connection with the client C .
+
+ server.accept(ss, C);
+
+
+
+
+
+ Adder_S_1 is the initial state channel of the Endpoint API generated for S . This state is a non-unary receive state, or branch state.
+
+
+
+
+ The Adder_S_1 class has an instance method:
+
+
+ Adder_S_1_Cases branch(C role)
+
+
+
+ This method blocks until a message is received. It returns a new instance of Adder_S_1_Cases that has a field op of the generated type:
+
+
+ enum Branch_S_C_Add_Int_Int__C_Bye_Enum implements OpEnum {
+ Add, Bye
+ }
+
+
+
+ The name of the enum is a mechanically
+derived name that does not need to be exposed in endpoint implementation
+ code in typical usage. The API sets the value of the op field of the returned Adder_S_1_Cases according to the operator of the received message.
+
+
+
+ Adder_S_1_Cases has the instance methods:
+
+
+ Adder_S_2 receive(C role, Add op, Buf<? super Integer> arg1, Buf<? super Integer> arg2)
+
+ EndSocket receive(C role, Bye op)
+
+
+
+ In each case of the switch(cases.op) statement, the corresponding method is used as a "cast" to obtain the appropriate state channel from the Cases object. The above methods are generated to throw a ScribbleRuntimeException if the wrong method is used.
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+ This section describes the syntax of Scribble modules and global protocols in more detail. It describes the syntactic constraints imposed by Scribble on global protocol definitions.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ A Scribble module is a file with the following elements, in order.
+
+
+
+
+ A module declaration :
+
+ module mypackage.MyModule;
+
+
+
+
+ The package prefix is optional.
+
+
+ The name of the file containing a Scribble module must be the same as the last element of the module name (MyModule ) appended by the Scribble file extension (.scr ); i.e. , the module declared above should be contained in a file named MyModule.scr .
+
+
+
+
+
+ Zero or more import declarations :
+
+ import somepackage.subpackage.SomeModule;
+
+
+
+
+ Scribble-Java looks for a declared import along the import path , mapping the package prefix to a directory offset. E.g. , for the above import declaration, Scribble-Java looks along the import path for a file somepackage/subpackage/SomeModule.scr .
+
+
+
+
+
+ Zero or more payload type declarations and message signature name declarations . The following explains payload type declarations.
+
+ type <java> "java.lang.Integer" from "rt.jar" as Int;
+
+
+
+
+ A payload type name (Int ) may be used in the payload of a message signature .
+
+
+ java is the host language of the declared data type -- N.B. the current version of Scribble-Java only accepts Java (reference) types;
+
+
+ java.lang.Int is of name of the type in the host language;
+
+
+ rt.jar is the resource where the type definition is located -- N.B. the current version of Scribble-Java does not actually use this field (any string value may be specified, and will be ignored);
+
+
+ Int is a payload type name by which the type may be referred to.
+
+
+
+
+
+
+ Message signature name declarations are explained later in this tutorial.
+
+
+
+
+ Zero or more global protocol declarations .
+
+
+
+
+ The notion of well-formed module is discussed here .
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ A message signature specifies the key elements of a message.
+
+
+ op ( pay1 , ..., payn )
+
+
+
+
+
+ op is the message operator . Scribble uses the operator to identify the message. In the concrete message format , the operator may be conveyed as, e.g. , a header field.
+
+
+
+ The operator may be omitted, denoting the empty operator .
+
+
+
+
+ ( pay1 , ..., payn ) is the message payload .
+
+
+ Each payi must be a payload type name .
+
+
+ The list of payload types may be the empty list, denoting the empty payload ; i.e. , () .
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+ A Scribble global protocol describes the interactions between the participants of a communication session from the global (i.e. , neutral) perspective. A Scribble protocol abstracts session participants as named roles . Sessions are sometimes referred to as conversations .
+
+
+
+ Scribble protocols are strictly explicit about session
+interactions -- the only application-level messages to be communicated
+in a Scribble session are those that are explicitly specified in the
+protocol.
+
+
+ global protocol MyProto(role r1 , ..., role rn ) {
+ ...
+ }
+
+
+
+
+
+ MyProto is the name of the protocol.
+
+
+ role r1 , ..., role rn is the role declaration list .
+
+
+ The list of roles must contain at least two roles. The role names must be distinct.
+
+
+
+
+ { ... } is the protocol body .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ A message interaction is a role-to-role pairing of a send action and a receive action of a message.
+
+
+
+ The message may be specified as a message signature , i.e. , an operator and a payload:
+
+
+ op(pay) from r1 to r2 ;
+
+
+
+ or as a message signature name :
+
+
+ Msg from r1 to r2 ;
+
+
+
+ In both cases, r1 is the sender role and r2 is the receiver role.
+
+
+
+ The sender and receiver roles must be distinct.
+
+
+
+
+
+ The communication model of Scribble is that message delivery is output-asynchronous , reliable , and ordered in each direction between each pair of roles. Output-asynchronous means the send action is non -blocking for the sender, but the receive action is blocking for the receiver (i.e. , until the message arrives). This model caters for applications using, e.g. , TCP channels, or (unbounded) FIFOs in shared memory.
+
+
+
+ Send actions are considered output actions, and receive actions are considered input actions.
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ The choice statement designates a branch point in the protocol. The protocol proceeds according to one of the or -separated cases.
+
+
+ choice at r { ... } or ... or { ... }
+
+
+
+
+
+ The at -role, r , is called the choice subject .
+
+
+ The choice subject selects which block to follow as an internal choice . A Scribble protocol leaves the actual decision procedure abstract (it is an implementation -level concern).
+
+
+ The decision is to be communicated as an external choice to the other roles by appropriate message passing in each case.
+
+
+
+
+
+ A choice statement is subject to the following syntactic constraints.
+
+
+
+ Role enabling :
+
+
+
+ A role is either enabled or disabled .
+
+
+ On entering a choice , the only enabled role is the choice subject; all other roles that occur in the choice are disabled.
+
+
+ A role in a choice context may only send a message or request a connection if it is enabled.
+
+
+ A disabled role is enabled by receiving a message or accepting a connection (from an enabled role).
+
+
+
+
+
+ Consistent external choices :
+
+
+
+ For each role that occurs in the choice that is not the choice subject, the action kind (i.e. , receive or accept ) and interaction peer (i.e. , the sender or client role) of the enabling action must be the same in all choice cases.
+
+
+
+
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The do statement instructs the specified roles to perform the interactions of the specified protocol inline with the current session.
+
+
+
+
+do MyProto(r1 , ..., rn );
+
+
+
+
+
+ MyProto is the name of a global protocol , referred to as the target protocol .
+
+
+ r1 , ..., rn is the role argument list .
+
+
+ The length of role argument list must be the same as the length of the role declaration list of the target protocol declaration.
+
+
+ The role argument names must be distinct.
+
+
+
+
+ The meaning of the do statement is given by substituting every occurrence in the target protocol body
+ of a role in the role declaration list of the target protocol
+declaration with the corresponding role in the role argument list.
+
+
+
+
+
+ In other words, each role in the role argument list plays the corresponding role in the role declaration list of the target protocol declaration.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+ A do statement may be used to define (mutually) recursive protocols.
+
+
+
+ In addition to the previously stated constraints on do statements, Scribble global protocol definitions must be tail recursive per role . This means:
+
+
+
+ for any declared role r of a global protocol , it is not permitted for the protocol definition to sequence any action by r after a (mutually) recursive do statement that involves r .
+
+
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Message signature name declarations may occur alongside payload type declarations .
+
+
sig <java> "javapackage.JavaClass" from "myjar.jar" as MyMessage;
+
+
+
+
+ A message signature name (MyMessage ) may be used in a message interaction . It represents a data type in the host language with custom message formatting , i.e. , serialization and deserialization, routines.
+
+
+
+ java is the host language for which the message formatting routines for this message are implemented -- N.B. the current version of Scribble-Java only accepts concrete Java subclasses of the ScribMessage interface of the Scribble API;
+
+
+ javapackage.JavaClass is the host language name of the code unit (i.e. Java class) that contains the message formatting routines;
+
+
+ myjar.jar is the resource where the code message formatting code is located -- N.B. the current version of Scribble-Java does not actually use this field (any string value may be specified, and will be ignored);
+
+
+ MyMessage is the message signature name for this message format.
+
+
+
+
+
+
+ In message interactions that specify message signature names, the message signature name itself is used to identify the message (cf. the operator in a message signature ).
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ A global protocol declaration may have the modifier explicit .
+
+
+ explicit global protocol MyProto(...) { ... }
+
+
+
+ The communication model of a non -explicit global protocol starts with all roles pairwise connected by binary channels.
+
+
+
+ By contrast, the communication model of an explicit global protocol starts with all roles unconnected . A pair of roles are connected by:
+
+
+ connect r1 to r2 ;
+
+
+
+ A connection interaction is a role-to-role pairing of a connection request action and a connection accept action. Role r1 is the client role, and r2 is the server role.
+
+
+
+
+ The client and server roles must be distinct.
+
+
+
+
+ A connection interaction is a synchronous interaction between the client and server, i.e. ,
+ the first role to perform either connection action is blocked until the
+ other role performs the counterpart action. The connection interaction
+ establishes a bidirectional binary (i.e. , two-party) channel with the characteristics of the Scribble communication model , i.e. message delivery is reliable and ordered in each direction.
+
+
+ A pair of roles are disconnected by:
+
+
disconnect r1 and r2 ;
+
+
+
+ Each of the two disconnect actions in the above pairing is a local action, i.e.
+ it does not directly pertain to any interaction between the two roles.
+ A disconnect action closes the input queue at the local endpoint of the
+ binary channel between these two roles.
+
+
+
+ In the context of Scribble, request actions are considered output actions, and accept actions are considered input actions.
+
+
+
+ An explicit global protocol is subject to the following syntactic constraints.
+
+
+
+
+ A connection action is not permitted if the two roles are potentially connected.
+
+
+ A message action or a disconnect action is not permitted if the two roles are potentially unconnected.
+
+
+
+
+ This means there is at most one connection between any two roles.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This section describes the notion of whether a global protocol is valid in Scribble.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Scribble validates that a global protocol satisfies a set of desirable properties . These include safety properties, such as no reception errors (a role never receives an unexpected message), and liveness properties, such as eventual reception (a sent message can always eventually be received).
+
+
+
+ A Scribble global protocol is validated by two steps.
+
+
+
+
+
+ Specifically, the second step is conducted on a 1-bounded
+model of the protocol. That is, the model given by the exhaustive
+execution of the system of Endpoint FSMs where each communication
+channel is limited to a maximum capacity of one message in each
+direction.
+
+
+
+
+
+ A global protocol is syntactically well-formed if it satisfies the syntactic constraints of the first of the above steps.
+
+
+ A global protocol is valid if it satisfies both the above steps.
+
+
+
+
+
+ The Scribble validation of global protocols is sound . This means a valid protocol satisfies the safety and liveness properties in the general setting, i.e. , the system of Endpoint FSMs with unbounded channels. Soundness is due to the characteristics of the protocol (i.e. , the restrictions on endpoint behaviours) imposed by syntactic well-formedness.
+
+
+
Well-formed modules
+
+
+ A module is well-formed if every global protocol in the module is valid.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ The Endpoint FSM for any role of a syntactically well-formed Scribble global protocol has the following characteristics.
+
+
+
+
+
+ There is one initial state and at most one terminal state .
+
+
+ A state is one of the following kinds.
+
+
+ An output state . It has at least one transition. The action of every transition is either a send or a connect action.
+
+
+ An input state . It has at least one transition and is either:
+
+
+ a receive state , where all actions of its transitions are receive actions from the same role;
+
+
+ an accept state , where all actions of its transitions are accept actions from the same role;
+
+
+
+
+ A disconnect state. It has one transition. The action of the transition is a disconnect action.
+
+
+ The terminal state. It has no transitions.
+
+
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ We first introduce some terminology.
+
+
+
+ A role is inactive in a session if it is at the initial state and is not connected to any role, or it is at the terminal state . Otherwise the role is active .
+
+
+ A session is in a final state if no role can perform any action.
+
+
+
+
+
+ A valid Scribble global protocol satisfies the following safety properties.
+
+
+
+ No reception errors . A message received by a role at a receive state is always one of the expected messages.
+
+
+ No orphan messages . A role that is inactive in a session has no outstanding messages to receive.
+
+
+ No unfinished roles . No role is left in an active state in a session that is in a final state.
+
+
+
+
+
+ A valid Scribble global protocol satisfies the following liveness properties.
+
+
+
+ Role progress . An active role can always eventually perform an action.
+
+
+ Eventual reception . A sent message can always eventually be received.
+
+
+
+
+
+Fairness of output choice implementations
+
+
+ Scribble supports an option to consider unfair endpoint implementations of the choice between actions at output states . Here, "unfair" means that the implementation of the choice may never perform a particular action, even if the choice may be repeated infinitely often (i.e. , in a recursive protocol).
+
+
+
+ For this option, Scribble adopts a "worst case" view where endpoint implementations exercise a minimal number of output choice options during session execution. This is affected by a model transformation that commits a role to perform again the same action whenever an output state is revisited .
+
+
+
+ See here for the instructions on enabling or disabling this option in the command line tool.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ This section describes the generation of protocol-specific Java Endpoint APIs by Scribble in more detail.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ An Endpoint API for a role in a global protocol has two parts.
+
+
+
+
+ The Session Class is the front-end class for creating a new session following the source protocol.
+
+
+ The State Channel API is a family of state-specific channel classes used to implement an endpoint playing the target role.
+
+
+
+
+ For a global protocol, e.g. Adder , in the Scribble module tutorial.adder.Adder , Scribble generates the Session Class as follows.
+
+
+
+
+ The Session Class is public class with the same name as the protocol, i.e. , Adder .
+
+
+ The package of the Session Class is given by the module name and the protocol name, i.e. , tutorial.adder.Adder.Adder ;
+
+
+ The Session class has a no-args constructor:
+
+ public Adder()
+
+
+
+
+
+ An Endpoint API uses classes from the base Scribble API, which will be referred to in the following sections.
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ A global protocol may feature several kinds of names : roles, message operators and message signature names.
+
+
+
+ Scribble generates a Java singleton type for each of these names. The following illustrates the code generated for the C role in Adder .
+
+
+ package tutorial.adder.Adder.Adder.roles;
+
+ public final class C extends org.scribble.sesstype.name.Role {
+ private static final long serialVersionUID = -6429099329627603991L;
+ public static final C C = new C();
+ private C() {
+ super("C");
+ }
+ }
+
+
+
+
+
+ C is the name of the class (i.e. , of the singleton type ).
+
+
+ C is also the name of the public static final field of type C in the class that refers to the singleton instance of the class.
+
+
+ The leading tutorial.adder.Adder in the package name derives from the source module name. The second Adder in the package name derives from the global protocol name.
+
+
+
+
+
+ The generation for message operators and message signature names is similar.
+
+
+
+ For convenience, the Session Class is also generated with field constants referring to the singleton type instances. E.g. , the Adder Session Class has the following fields:
+
+
+ public static final C C = tutorial.adder.Adder.Adder.roles.C.C;
+ public static final S S = tutorial.adder.Adder.Adder.roles.S.S;
+ public static final Add Add = tutorial.adder.Adder.Adder.ops.Add.Add;
+ public static final Bye Bye = tutorial.adder.Adder.Adder.ops.Bye.Bye;
+ public static final Res Res = tutorial.adder.Adder.Adder.ops.Res.Res;
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ The generation of a State Channel API for a role in a global protocol is based on the Endpoint FSM of that role.
+
+
+
+ Assume a valid global protocol G in a well-formed module mypack.MyMod . Let s be a state in the Endpoint FSM of G for role r .
+
+
+
+
+ If s is a terminal state in the Endpoint FSM, the Scribble generates:
+
+
+
+
+ a class named EndSocket with no I/O methods in package mypack.MyMod.G.channels.r .
+
+
+
+
+
+ N.B. Henceforth, references to a class G_r_s where s is a terminal state should be considered as EndSocket .
+
+
+
+
+ Otherwise (i.e. , if s is not a terminal state):
+
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Let:
+
+
+
+
+ soutput be an output state in the Endpoint FSM of G for role r ;
+
+
+ a1..n be the actions of the transitions from s , leading to states s1..n , respectively.
+
+
+
+ For each send action ai to receiver role r_i for message m :
+
+
+
+
+ If m is a message signature Op(Pay1 , ..., Payn ) , Scribble generates an instance method in class G_r_s :
+
+ public G_r_si send(ri role, Op op, Pay1 arg1, ..., Payn argn) throws ScribbleRuntimeException, IOException
+
+
+
+
+ If m is a message signature name M , Scribble generates an instance method in class G_r_s :
+
+
+ public G_r_si send(ri role, M msg) throws ScribbleRuntimeException, IOException
+
+
+
+
+
+ The send methods are generated to return without blocking.
+
+
+
+ For each connect action ai to receiver role r_i , Scribble generates an instance method in class G_r_s :
+
+
+ public G_r_si connect(ri role, Callable<? extends BinaryChannelEndpoint> cons, String host, int port)
+ throws ScribbleRuntimeException, IOException
+
+
+
+
+ org.scribble.net.session.BinaryChannelEndpoint is an abstract class that represents a bidirectional binary communication channel. Implementations of this interface must provide a channel that is reliable and order-preserving in each direction .
+
+
+
+ org.scribble.net.session.SocketChannelEndpoint is a concrete implementation using TCP provided by the Scribble API.
+
+
+
+
+ host and port identify the address of the server for the connection request.
+
+
+ E.g. , for SocketChannelEndpoint , host is an Internet host name and port a TCP port.
+
+
+
+
+
+
+ The connect method is generated to block until the connection is established or an exception is thrown.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Let:
+
+
+
+
+ sreceive be a receive state in the Endpoint FSM of G for role r ;
+
+
+ a1..n be the receive actions, from sender role r' , of the transitions from s , leading to states s1..n , respectively.
+
+
+
+
+ If s is a unary receive state, i.e. , n = 1 , and a1 specifies message m , then:
+
+
+
+
+ If m is a message signature Op(Pay1 , ..., Payn ) , Scribble generates an instance method in class G_r_s :
+
+ public G_r_s1 receive(r' role, Op op, Buf<? super Pay1 > arg1, ..., Buf<? super Payn > argn)
+ throws ScribbleRuntimeException, IOException, ClassNotFoundException
+
+
+
+
+ If m is a message signature name M , Scribble generates an instance method in class G_r_s :
+
+
+ public G_r_s1 receive(r' role, Buf<? super M arg1)
+ throws ScribbleRuntimeException, IOException, ClassNotFoundException
+
+
+
+
+
+ The receive methods are generated to block until a message is received.
+
+
+
+
+
+
+
+ Otherwise, i.e. , n > 1 , Scribble generates:
+
+
+
+
+
+ The branch method is generated to block until a message is received.
+
+
+
+ For each (receive) action ai from sender r' for message mi :
+
+
+
+
+ If mi is a message signature Op(Pay1 , ..., Payn ) , Scribble generates an instance method in class G_r_s_Cases :
+
+ public G_r_si receive(r' role, Op op, Buf<? super Pay1 > arg1, ..., Buf<? super Payn > argn)
+ throws ScribbleRuntimeException, IOException, ClassNotFoundException
+
+
+
+
+ If mi is a message signature name M , Scribble generates an instance method in class G_r_s_Cases :
+
+
+ public G_r_si receive(r' role, Buf<? super M arg1)
+ throws ScribbleRuntimeException, IOException, ClassNotFoundException
+
+
+
+
+
+
+ org.scribble.net.Buf<T> is a utility class in the Scribble API.
+
+
+
+
+ It has a mutable field val of type T .
+
+ It has a public constructor Buf(T t) , which initialises val to t .
+
+
+
+
+ The receive methods in both of the above cases are generated to write the each of the received payload values or message object to the val field of the corresponding Buf argument before returning.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Let:
+
+
+
+
+ saccept be an accept state in the Endpoint FSM of G for role r ;
+
+
+ a1..n be the actions of the transitions from s , leading to states s1..n , respectively.
+
+
+
+ Scribble generates an instance method in class G_r_s :
+
+
+ public G_r_s1 accept(ri role, ScribServerSocket ss) throws ScribbleRuntimeException, IOException
+
+
+
+
+ org.scribble.net.scribsock.ScribServerSocket is an abstract class that represents a server port for accepting BinaryChannelEndpoint connection requests.
+
+ org.scribble.net.scribsock.SocketChannelServer is a concrete implementation using TCP provided by the Scribble API.
+
+
+
+
+
+ The accept method is generated to block until the connection is established or an exception is thrown.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ If s is a disconnect state in the Endpoint FSM of G for role r :
+
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Scribble enforces a linear usage discipline on state channel
+instances, by generating run-time checks into the Endpoint API. This
+means an endpoint implementation should invoke one I/O method on every instance of a state channel, apart from EndSocket . The following situations throw a ScribbleRuntimeException .
+
+
+
+
+ An I/O method is invoked on a state channel instance on which an I/O method has been previously invoked.
+
+
+
+ A try -with-resources statement closes an MPSTEndpoint declared in a resource specification and there exists an associated state channel instance on which no I/O method has been called.
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ This section describes additional details of endpoint implementation
+using Scribble-generated APIs and the associated safety properties.
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+Endpoint implementation using an Endpoint API generated from a non -explicit global protocol relies on a connection establishment phase between creating the MPSTEndpoint and the initial state channel .
+
+
+Client-side connection requests
+
+
+ The following is from the example implementation of a C client in Adder .
+
+
+ Adder adder = new Adder();
+ try (MPSTEndpoint<Adder, C> client =
+ new MPSTEndpoint<>(adder, C, new ObjectStreamFormatter())) {
+ client.connect(S, SocketChannelEndpoint::new, "localhost", 8888);
+ /* Body of endpoint implementation, starting from new Adder_C_1(client)*/
+ }
+
+
+
+ Client -side connection requests are peformed by the connect method of MPSTEndpoint .
+
+
+ client.connect(S, SocketChannelEndpoint::new, "localhost", 8888);
+
+
+
+ The above method has the same signature as the State Channel API connect method generated for explicit connect actions.
+
+
+
+
+ S is the singleton type constant generated for the role being connected to.
+
+
+ SocketChannelEndpoint::new is a constructor reference, passed as parameter of expected type Callable<? extends BinaryChannelEndpoint > .
+
+
+ "localhost" and 8888 are the hostname and port arguments for the SocketChannelEndpoint connection request.
+
+
+
+
+Server-side connection accepts
+
+
+ The following is from the example implementation of a S server in Adder .
+
+
+ try (ScribServerSocket ss = new SocketChannelServer(8888)) {
+ while (true) {
+ Adder adder = new Adder();
+ try (MPSTEndpoint<Adder, S> server
+ = new MPSTEndpoint<>(adder, S, new ObjectStreamFormatter())) {
+ server.accept(ss, C);
+ new AdderS().run(new Adder_S_1(server));
+ } catch (ScribbleRuntimeException | IOException | ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+
+ Server -side connections are accepted via an instance of org.scrible.net.scribsock.ScribServerSocket .
+
+
+ try (ScribServerSocket ss = new SocketChannelServer(8888)) { ... }
+
+
+
+
+ org.scribble.net.scribsock.SocketChannelServer is a concrete implementation of ScribServerSocket for accepting the server-side of TCP connections.
+
+
+
+
+ A connection is accepted by the accept method of MPSTEndpoint .
+
+
+ server.accept(ss, C);
+
+
+
+
+ ss is the SocketChannelServer , passed as a parameter of expected type ScribServerSocket .
+
+
+ C is the singleton type constant generated for the role to accept the connection from.
+
+
+
+
+Safety warning for non-explicit connection actions
+
+
+ The actions performed in a non-explicit connection phase are not verified in any way. This means it is up to the programmer to avoid errors such as the following.
+
+
+
+
+ Incorrect connection request or accept actions, i.e. , performing a connect instead of an accept or vice versa, or attempting a connect or accept with the wrong role.
+
+
+ Deadlock, e.g. , due to a wait-for cycle between two or more roles mutally blocked on connect and accept actions.
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ The following is the API usage contract for endpoint implementations using Scribble-generated Endpoint APIs .
+
+
+
+ Starting from an instance of the initial state channel, an endpoint implemention should proceed by calling one method on the current channel to obtain the next, up to the end of the protocol (if any).
+
+
+
+ An Endpoint API is generated to throw a ScribbleRuntimeException at run-time if the above rule, i.e. linear usage of state channels, is violated. The I/O action of the offending method invocation will not be performed.
+
+
+
+ Note that the only way that an endpoint implementation using an Endpoint API may attempt
+ to violate the protocol is by violating state channel linearity. This
+confers the following form of safety for Scribble endpoint
+implementations.
+
+
+
+
+ If linear channel usage is respected, then Java type checking statically guarantees that the endpoint implementation complies to the specified protocol.
+
+
+ Regardless of linear channel usage, Java type checking
+guarantees protocol compliance up to premature termination of the
+endpoint in the session.
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ The source code of the master version of Scribble-Java is available from GitHub .
+
+
+
+
+
+ We give basic instructions for two ways of building the Scribble-Java tool from source. Both ways will create the file
+
+
+ dist/target/scribble-dist-0.4-SNAPSHOT.zip
+
+
+
+ under the root directory of the scribble-java project.
+
+
+
+
+
+ Building Scribble-Java using command line Maven
+
+
+
+ These instructions have been tested on Ubuntu 16.04.2 using:
+
+
+
+
+ OpenJDK 1.8.0_221
+
+
+ Apache Maven 3.3.9
+
+
+
+
+ From the root directory of the scribble-java project:
+
+
+
+
+ mvn [clean] install
+
+
+
+
+
+
+
+
+ Building Scribble-Java using Eclipse
+
+
+
+ These instructions have been tested for:
+
+
+
+
+ Ubuntu 16.04.2, using Eclipse Luna 2 (4.4.2).
+
+
+ Windows 10, using Eclipse Neon.2 (4.6.2).
+
+
+ Mac OS X Yosemite, using Eclipse Luna 2 (4.4.2).
+
+
+
+
+ N.B. Eclipse must be configured to use a JDK 8 (Preferences → Java → Installed JREs).
+
+
+
+ Steps:
+
+
+
+
+ Import the Scribble-Java projects as Existing Maven Projects.
+
+
+ Eclipse should compile Scribble automatically.
+
+
+
+ You may be prompted to install a Maven-Eclipse plugin (M2E connector) for ANTLR.
+
+
+
+
+ Right click, e.g. , scribble-java in the Package Explorer → Run As → Maven install
+
+
+
+
+
+Installing the Scribble-Java command line tool
+
+
+ The scribble-dist-0.4-SNAPSHOT.zip built by the above instructions contains:
+
+
+
+
+ scribblec.sh -- the command line script to run the tool;
+
+
+ lib -- a directory of jars for running the tool.
+
+
+
+
+ The script is immediately executable after extracting the zip contents.
+
+
+
+ Alternatively, the script is executable from the scribble-java root directory, without lib , by:
+
+
+
+
+ building the project (as above);
+
+
+ and setting the ANTLR variable in the script to provide the Java classpath for an ANTLR 3 runtime.
+
+
+
+
+ <
+ prev ;
+ top ;
+ next
+ >
+
+
+
+
+
+
+
+
+
+ Assuming the scribblec.sh script is installed at the current directory, various command line options are shown by:
+
+
+ ./scribblec.sh --help
+
+
+
+ The following summarises a few options mentioned in this tutorial:
+
+
+
+
+
+ -ip import_path
+
+
+ Sets the import path for module imports.
+
+
+
+
+ -fair
+
+
+ Disables the model transformation and checking for "unfair " endpoint implementations.
+
+
+
+
+
+
+ A command for validating the example Adder protocol and generating the API for the C role was given here .
+
+
+
+ Further examples of using the scribblec.sh script can be found in this README .
+
+
+
+ <
+ prev ;
+ top ;
+ >
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/scribble-scala.html b/docs/scribble-scala.html
new file mode 100644
index 0000000..a74184b
--- /dev/null
+++ b/docs/scribble-scala.html
@@ -0,0 +1,1708 @@
+
+
+
+
+
+ Scribble-Scala: Tutorial and Demo Artifact
+
+
+
+
+
+
+
+
+
+ Scribble-Scala: Tutorial and Demo Artifact
+
+
+
+ Alceste Scalas ,
+ Ornela Dardha,
+ Raymond Hu,
+ Nobuko Yoshida
+
+
+ Table of Contents
+
+
+
+
+ Overview
+
+
+
+ This is a tutorial and demo of the Scribble-Scala tool for specifying and validating multiparty protocols, and Scala API generation for endpoint implementation.
+
+
+
+ This tutorial is accompanied by a demo artifact, published along with a paper on this work to appear in the proceedings of ECOOP '17. These are available online at the following:
+
+
+
+
+
+
+
+ The artifact contains a VirtualBox image for a ready-to-use, streamlined Ubuntu 16.04.2
+ operating system
+ (thanks to OSBoxes.org ),
+ plus an installation of Scribble
+ and lchannels (see above) with their
+ dependencies.
+
+
+
+ See here for instructions on how to build Scribble-Scala from source.
+
+
+
+ In a nutshell, the interplay between Scribble
+ and lchannels is the following:
+
+
+
+
+ the Scribble tool can read a global protocol
+ specification, describing the interactions between
+ several roles (see Figure 9 in the paper), and
+ validate it against various communication errors;
+
+
+ then, for each role r in the protocol, our Scala
+ extension to Scribble can generate a set of Scala class definitions,
+ dubbed multiparty session classes : their API
+ consists of typed send() /receive()
+ methods, and guides the type-safe implementation of programs
+ playing role r ;
+
+
+ internally, the multiparty session classes perform their
+ communications through typed binary channels, using
+ the lchannels library. The theory that allows
+ Scribble-Scala to decompose the source multiparty
+ protocols into typed binary channels is developed in the paper
+ (from §2 to §6).
+
+
+
+
+ This tutorial presents several Scribble global protocols,
+ and their Scala implementations. The Scala endpoint programs
+ use the multiparty session classes generated by Scribble.
+
+
+ Quick Start (Kick-the-Tires)
+
+
+ In this section we provide basic instructions
+ to setup the VirtualBox image , and try out the
+ demos .
+
+
+ Setting Up and Running the VirtualBox Image
+
+
+ The following instructions have been tested
+ using VirtualBox
+ version 4.3.36 (on Ubuntu 14.04) and version 5.1.18 (on Windows
+ 10 and Mac OS X).
+ Start VirtualBox, and:
+
+
+
+
+ click "New"
+
+
+ type: Linux
+
+
+ version: Ubuntu (32-bit)
+
+
+ memory size: 1024 MB (if possible, 2048 MB or more)
+
+
+ hard disk: "Use an existing virtual hard disk file":
+ mpst-linear-artifact.vdi
+
+
+
+
+
+ then, right-click on the newly-added virtual machine →
+ "Settings...", and:
+
+
+ "System" → "Processor" → Check "Enable PAE/NX"
+
+
+
+
+
+
+ You can now start the newly-added VM, by selecting it and
+ clicking "Start". To log in , use the
+ following credentials:
+
+
+
+
+ username: osboxes
+
+
+ password: osboxes
+
+
+
+ Trying Out the Demos
+
+
+ After logging in, double-click on the "ECOOP'17 artifact
+ demo" icon on the desktop, and follow the instructions.
+
+
+
+ Each demo will:
+
+
+
+ show its Scribble global protocol specification;
+
+
+ run Scribble, and show its output: i.e. , the Scala multiparty
+ session classes corresponding to the global protocol;
+
+
+ launch an example implementation based on the multiparty session
+ classes above (at this point, one or more terminals will pop up).
+
+
+
+
+ All demos should run without troubles. You might
+ occasionally see a log message similar to the following, which
+ is harmless:
+
+
+
+[ERROR] [04/11/2017 17:09:16.721] [GreetingServerSys-akka.remote.default-remote-dispatcher-2] [akka.tcp://GreetingServerSys@127.0.0.1:31337/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FGreetingClientSys%40127.0.0.1%3A31338-0/endpointWriter] AssociationError [akka.tcp://GreetingServerSys@127.0.0.1:31337] <- [akka.tcp://GreetingClientSys@127.0.0.1:31338]: Error [Shut down address: akka.tcp://GreetingClientSys@127.0.0.1:31338] [
+akka.remote.ShutDownAssociation: Shut down address: akka.tcp://GreetingClientSys@127.0.0.1:31338
+Caused by: akka.remote.transport.Transport$InvalidAssociationException: The remote system terminated the association because it is shutting down.
+
+
+ If you do not encounter other issues, then the artifact should
+ be working, and ready for further evaluation.
+
+
+ Contents of the VirtualBox Image
+
+ These are the main contents of the VirtualBox image, and their locations:
+
+
+
+ Scribble, installed in:
+ /home/osboxes/scribble/
+
+
+ lchannels , installed
+ in: /home/osboxes/lchannels/
+
+
+ the artifact demo script, available
+ in: /home/osboxes/bin/demo
+
+
+
+ How to run Scribble (command line)
+
+
+ The Scribble tool can be used to check the well-formedness of
+ MPST protocols. In this artifact, we present an extended
+ version that also allows to generate the Scala APIs for
+ implementing the protocol endpoints.
+
+
+
+ Once logged in the VM, you can:
+
+
+
+
+
+ A concrete example:
+
+
+
+./scribblec-linmp.sh modules/linmp-scala/src/test/scrib/Greeting.scr Proto
+
+
+
+ For an explanation of Scribble syntax and the tool output, see
+ the Greeting protocol tutorial .
+
+
+ Scribble Tutorial: Greeting Protocol
+
+
+ We now give an overview of Scribble
+ syntax and the Scribble-Scala tool
+ output , using the "Greeting protocol" example originally
+ described
+ in this
+ ECOOP'16 paper .
+
+
+ Specifying an MPST Protocol in Scribble
+
+
+ Scribble provides a user-friendly, Java-inspired notation for
+ defining structured "global protocols" among multiple
+ participants. Such global protocols correspond to global types
+ in MPST theory (cf. section "Global Types" in the paper, page 10).
+
+
+
+ The Scribble specification of the Greeting protocol is available
+ in: /home/osboxes/scribble/modules/linmp-scala/src/test/scrib/Greeting.scr
+ (and also
+ here ):
+
+
+
+module Greeting;
+
+type <java> "java.lang.String" from "rt.jar" as String;
+
+global protocol Proto(role c, role s) {
+ choice at c {
+ Greet(String) from c to s;
+ choice at s {
+ Hello(String) from s to c;
+ do Proto(c, s);
+ } or {
+ Bye(String) from s to c;
+ }
+ } or {
+ Quit() from c to s;
+ }
+}
+
+
+ The above defines a simple protocol between two
+ participants, or roles : c (client)
+ and s (server). The protocol can be
+ read as follows:
+
+
+
+
+ c starts with a choice (line 6): it
+ could send to s either
+ a Greet message carrying
+ a String payload (line 7), or
+ a Quit message carrying an empty
+ payload (line 15);
+
+
+ if c chooses to
+ send Greet ,
+ then s can choose (line 8) to send
+ back to c either
+ a Hello message (line 9), or
+ a Bye message (line 12);
+
+
+ if s
+ chooses Hello , the protocol
+ recursively repeats from the start (line 10);
+
+
+ if s
+ chooses Bye , the
+ protocol terminates;
+
+
+
+
+ otherwise, if c chooses to send
+ Quit (line 15), the protocol terminates.
+
+
+
+
+ For reference, the formal notation for the corresponding global
+ type (see p.10, section "Global Types" in the paper) is:
+
+
+μX.c⟶s{
+ Greet(String).s⟶c{ Hello(String).X, Bye(String).end },
+ Quit(Unit).end
+}
+
+
+ We now briefly explain the various elements appearing in the
+ above Scribble specification:
+
+
+
+
+
+ NOTE: just like formal global types, this
+ version of Scribble supports action
+ prefixing : i.e. , sequential composition of
+ role-to-role message passing actions followed by other message
+ actions, do statements
+ or choice statements. However,
+ sequential composition following a
+ do or
+ a choice is not permitted.
+
+
+
+
+
+ Using the command line script:
+
+
+
+cd ~/scribble
+./scribblec-linmp.sh modules/linmp-scala/src/test/scrib/Greeting.scr Proto
+
+
+ The output will be a set of Scala class definitions, similar to
+ the following:
+
+
+
+// Global type (from modules/linmp-scala/src/test/scrib/Greeting.scr)
+// μ(Greeting_Proto___c__s_).c->s{Greet(String).s->c{Hello(String).Greeting_Proto___c__s_, Bye(String).end}, Quit(Unit).end}
+
+// -----------------------------------------------------
+// Local type for role s:
+// μ(Greeting_Proto___c__s_).c&{Greet(String).c⊕{Hello(String).Greeting_Proto___c__s_, Bye(String).end}, Quit(Unit).end}
+package test.proto.s
+
+import scala.concurrent.duration.Duration
+import lchannels._
+
+// Input message types for multiparty sessions
+sealed abstract class MsgMPGreetOrQuit
+case class Greet(p: String, cont: MPByeOrHello) extends MsgMPGreetOrQuit
+case class Quit(p: Unit) extends MsgMPGreetOrQuit
+
+// Output message types for multiparty sessions
+case class Hello(p: String)
+case class Bye(p: String)
+
+// Multiparty session classes
+case class MPGreetOrQuit(c: In[binary.GreetOrQuit]) {
+ def receive(implicit timeout: Duration = Duration.Inf) = {
+ c.receive(timeout) match {
+ case m @ binary.Greet(p) => {
+ Greet(p, MPByeOrHello(m.cont))
+ }
+ case m @ binary.Quit(p) => {
+ Quit(p)
+ }
+ }
+ }
+}
+case class MPByeOrHello(c: Out[binary.ByeOrHello]) {
+ def send(v: Bye) = {
+ val cnt = c ! binary.Bye(v.p)
+ ()
+ }
+ def send(v: Hello) = {
+ val cnt = c !! binary.Hello(v.p)_
+ MPGreetOrQuit(cnt)
+ }
+}
+
+// Classes representing messages (with continuations) in binary sessions
+package object binary {
+ sealed abstract class GreetOrQuit
+ case class Greet(p: String)(val cont: Out[ByeOrHello]) extends GreetOrQuit
+ case class Quit(p: Unit) extends GreetOrQuit
+
+ sealed abstract class ByeOrHello
+ case class Bye(p: String) extends ByeOrHello
+ case class Hello(p: String)(val cont: Out[GreetOrQuit]) extends ByeOrHello
+}
+// -----------------------------------------------------
+
+// -----------------------------------------------------
+// Local type for role c:
+// μ(Greeting_Proto___c__s_).s⊕{Greet(String).s&{Hello(String).Greeting_Proto___c__s_, Bye(String).end}, Quit(Unit).end}
+package test.proto.c
+
+// ... [OMITTED]
+
+// -----------------------------------------------------
+
+
+ We now explain the elements of the above tool output,
+ and how the generated Scala APIs may be used to implement the
+ session endpoints.
+
+
+
+
+ The "Global type" on line 2 is the translation of the Scribble
+ greeting protocol into the formal global types
+ notation of the paper (cf. p.10). Note
+ that Greeting_Proto___c__s_ is an
+ autogenerated recursion variable.
+
+
+ Then, for each role in the protocol (in this
+ case, s
+ and c ), the code between
+ the markers "// ----... "
+ contains:
+
+
+ the local type for the role (lines 5-6 and
+ 57-58), with the formal notation in the paper (§2).
+ The local type is obtained by projecting the
+ global type above onto the role (cf. p.10 and §A.2 in
+ the paper);
+
+
+ a Scala package declaration and some
+ minimal import s (lines 7/10);
+
+
+ a set of case class es
+ representing messages that could be received by
+ the role (lines 12-15). In our greeting protocol example,
+ in the case of role s , such
+ messages/classes are Greet
+ and Quit ; and since they could
+ be received in the same (external) choice, they are
+ grouped by deriving a common
+ autogenerated sealed abstract class
+ MsgMPGreetOrQuit (line 13). In all input message
+ classes, the field p contains
+ the payload of the received message, while
+ the cont field (if present)
+ tells what is the next state of the multiparty
+ session following the message (more details soon);
+
+
+ a set of case class es
+ representing messages that could be sent by the
+ role (lines 17-19). In our example, such messages/classes
+ are Hello
+ and Bye . As above, the
+ field p contains the payload of
+ the message;
+
+
+ a set of multiparty session classes representing
+ the possible states of the multiparty session
+ (lines 21-43). Such classes offer either
+ a send() or
+ a receive() method. In our
+ example, MPGreetOrQuit (lines
+ 22-33) represents the initial state of the greeting
+ protocol, and therefore offers
+ a receive() method (line 23)
+ that could return one of the input messages
+ Greet
+ or Quit (seen above).
+ Instead, MPByeOrHello represents
+ the state where role s must
+ send() one of the output messages
+ Bye
+ or Hello (seen above). The
+ send() methods return
+ the next state of the multiparty session : e.g. ,
+ if Bye is sent (line 35),
+ then () is returned, because the
+ session is terminated; instead,
+ if Hello is sent (line 39), then
+ the method returns an instance
+ of MPGreetOrQuit to continue the
+ session;
+
+
+ finally, a package object binary
+ containing the Scala representation of
+ the linearly-encoded partial projections of the local
+ type . Roughly:
+
+
+ the partial projections isolate
+ the binary , point-to-point interactions between
+ role s and each
+ other role in the multiparty session (in this example,
+ the only other role is c ).
+ See Definition 2.9 in the paper;
+
+
+ its linear encoding , using
+ continuation-passing style, is defined in the paper,
+ section "Encoding of Types" (p.16);
+
+
+ the Scala representation of such a linear
+ encoding is based
+ on this
+ ECOOP'16 paper (§7).
+
+
+
+
+
+
+
+
+ Note that an analogous set of classes (for input/output
+ messages, multiparty sessions, binary channels) is also
+ generated for the other roles of the global protocol. In this
+ example, the only other role is s
+ (for which we have omitted the resulting classes, in lines 59-63).
+
+
+ Using the Scribble-Generated Multiparty Session Classes
+
+
+ Now, the classes in the binary
+ package could be used directly
+ with lchannels (as
+ described here )
+ to implement type-safe point-to-point interactions between each
+ pair of roles involved in a multiparty session. However, doing
+ so has two drawbacks:
+
+
+
+
+ a programmer would be (partly) exposed to the
+ continuation-passing-style
+ of lchannels , and
+
+
+ if a multiparty session has n participants, a
+ programmer implementing one of its participants would need to
+ handle up to n-1 point-to-point channels, without any
+ guidance on their usage order: this can introduce deadlocks
+ (see §7 of the paper). This is not a problem for the
+ greeting protocol (that only has two participants), but will
+ be relevant, e.g. , for the Game
+ and ThreeBuyer examples later on.
+
+
+
+
+ These issues are addressed by the multiparty session
+ classes MPGreetOrQuit
+ and MPByeOrHello (seen above): they offer a
+ simplified interface where a programmer only uses the
+ input/output message classes Greet ,
+ Quit , Bye
+ and Hello (seen above), without
+ visible continuations. The binary classes (and their
+ continuations) are handled
+ internally by MPGreetOrQuit
+ and MPByeOrHello , following the
+ formalisation in §5 of the paper. Moreover, if a session
+ involves more than two participants, the interface ensures that
+ the interactions will not result in a deadlock.
+
+
+
+ Here is an implementation of the greeting protocol server, based
+ on the multiparty session classes above.
+
+
+
+def server(c: MPGreetOrQuit)
+ (implicit timeout: Duration): Unit = {
+ c.receive match {
+ case Greet(whom, cont) => {
+ val c2 = cont.send(Hello(whom)) // Use "cont" to continue the session
+ server(c2) // The return value of .send above allows to keep interacting
+ }
+ case Quit(()) => {
+ () // The session is terminated
+ }
+ }
+}
+
+
+ The code should be pretty self-explanatory. Note that
+ all send calls are type-safe, and the
+ Scala compiler will warn if a .receive match {
+ ... } does not cover all possible input messages
+ (depending on the state of the session). Also note that the
+ multiparty session objects have the same runtime linearity
+ usage rules of the underlying linear channels: i.e. , the
+ programmer is supposed to use each instance exactly
+ once to send/receive a message. If
+ .send() /.receive()
+ is called twice on the same
+ object, lchannels will throw a runtime
+ exception
+ (see the
+ ECOOP'16 paper for more details).
+
+
+
+ One remaining question is: how does one produce an instance
+ of MPGreetOrQuit , to invoke
+ the server function above? Here is an
+ example:
+
+
+
+// Create channel for local client/server interaction...
+val (in, out) = LocalChannel.factory[binary.GreetOrQuit]
+// ...and spawn server and client (note: we wrap channels in sesison objs)
+val sf = Future { server(MPGreetOrQuit(in)) }
+val cf = Future { client(...(out)) }
+
+
+ In other words, the caller creates a pair of linear channel
+ endpoints connecting the client to the server, uses one of them
+ to instantiate MPGreetOrQuit(in) , and
+ passes it to the server function.
+ Note that the type of the parameter
+ of MPGreetOrQuit constrains the
+ carried type of the binary channel, that on line 2 must
+ be
+ binary.GreetOrQuit (or a subtype).
+
+
+
+ The example above uses LocalChannel s
+ for inter-thread communication, but a similar approach can be
+ used with socket-based
+ or Akka actor-based channels (both
+ provided by lchannels ), thus
+ allowing server to interact with a
+ remote client (indeed, the server code
+ is independent from the message transport).
+
+
+ Implementation
+
+
+ An implementation of the greeting protocol, based on the
+ Scribble-generated multiparty session classes, is available in
+ ScribbleGreeting.scala .
+ The file contains the autogenerated classes for both
+ roles s
+ and c , enclosed in different
+ namespaces to avoid clashes.
+
+
+
+ The artifact demo script launches a
+ greeting server and client interacting remotely, using Akka
+ actor-based channels. The implementation, however, includes more
+ examples, with the the greeting client/server launched as
+ interacting threads, or the client talking through a socket with a
+ simple server written in Python .
+ If you want to try them, you can go to
+ the lchannels
+ installation directory and follow
+ the lchannels
+ documentation .
+
+
+
+
+ NOTE:
+ the ScribbleGreeting.scala
+ example is functionally equivalent to the
+ pre-existing Greeting.scala
+ example; the difference is that the latter interacts directly
+ via lchannels without using
+ Scribble-generated multiparty session classes.
+
+
+
+ HTTP (GET fragment)
+
+
+ This example implements fragment of the HTTP/1.1 protocol,
+ focused on the GET method. The purpose is to show that our
+ artifact is flexible enough to handle non-trivial "real-world"
+ protocols, and produce endpoint code that is interoperable with
+ existing (compliant) implementations of such protocols (in this
+ example, existing Web browsers).
+
+
+
+ Similarly to the greeting protocol in
+ the tutorial above , HTTP is a
+ binary protocol --- i.e. , a multiparty protocol with two roles
+ (client and server). Its Scribble specification is
+ available in /home/osboxes/scribble/modules/linmp-scala/src/test/scrib/Http.scr
+ (and also
+ here ).
+ Its only new feature is a recursive protocol block ,
+ that behaves as expected:
+
+
+
+rec X {
+ choice at c {
+ Host(String) from c to s;
+ continue X;
+ } or {
+ UserAgent(String) from c to s;
+ continue X;
+ } or {
+ ...
+ } or {
+ RequestBody(Body) from c to s;
+ do Response(c, s);
+ }
+}
+
+
+ To generate the session classes from the Scribble HTTP specification,
+ you can run:
+
+
+
+cd ~/scribble
+./scribblec-linmp.sh modules/linmp-scala/src/test/scrib/Http.scr Http
+
+ Implementation Details
+
+
+ The Scribble-generated classes have been integrated in the
+ HTTP server implementation. More in detail:
+
+
+
+
+ Running the HTTP Server
+
+
+ To run the HTTP server, you can launch
+ the artifact demo script or follow
+ the lchannels
+ documentation . While the server is running, you can connect
+ to http://127.0.0.1:8080/
+ with your browser. You can also "stress test" the implementation by
+ recursively downloading all the files being served:
+
+
+
+cd /tmp
+wget -l 100 -r http://127.0.0.1:8080/
+
+
+ NOTE: wget might
+ report some transient read errors ("Connection reset by peer"),
+ because our HTTP server does not currently observe the client's
+ keep-alive requests . Still, the download will
+ proceed through a new connection.
+
+
+ Example: Peer-to-Peer Game
+
+
+ This is the main running example in
+ the paper (first introduced in §1),
+ that concisely leverages all MPST features (session with more
+ than two roles, branching, selection, recursion, delegation,
+ inter-role dependencies, projection, merging). Its Scribble
+ specification (corresponding to Figure 9 in the paper) is
+ available
+ in /home/osboxes/scribble/modules/linmp-scala/src/test/scrib/Game.scr
+ (and also
+ here ).
+
+
+
+ Unlike the greeting protocol and
+ HTTP examples, the game protocol involves three
+ roles. Moreover, it features session delegation :
+
+
+
+global protocol ClientA(role p, role q) {
+ PlayA(Game@a) from q to p;
+}
+
+global protocol ClientB(role p, role q) {
+ PlayB(Game@b) from q to p;
+}
+
+global protocol ClientC(role p, role q) {
+ PlayC(Game@c) from q to p;
+}
+
+global protocol Game(role a, role b, role c) {
+ ...
+}
+
+
+ Above, the message PlayA(Game@a)
+ carries as payload a multiparty session channel : it
+ allows the recipient to join an instance of the
+ the Game protocol, by playing the
+ role a . Here,
+ "@ " is the projection
+ operator , and is one of our main additions to Scribble,
+ based on the theory of our paper. It means that the type of the
+ payload of PlayA(Game@a) is determined
+ by projecting Game onto
+ role a (cf. p.10 and §A.2 in the
+ paper; note that before being
+ projected, Game is first converted
+ into the formal syntax for global types). The same intuition
+ applies for messages PlayB(Game@b)
+ and PlayC(Game@c) . As one might
+ expect, the projection of a Scribble global
+ protocol G onto a
+ role r is only allowed
+ if r appears
+ in G 's declaration; e.g. , in this
+ example, Game can only be projected
+ onto a , b
+ and c .
+
+
+ Generating and Using the Session Classes
+
+
+ The Scribble specification above contains multiple global
+ protocols, and each one can be used to generate multiparty
+ protocol classes. Assume that we want to implement a Scala
+ program that talks to the game server, and then plays
+ role a : to do so, we can generate the
+ session classes for the global
+ protocol ClientA , and write our
+ program using those pertaining to role p
+ (recall that, from §1 of the
+ paper, p is the client that receives
+ the game delegation, while q is the
+ game server).
+
+
+
+cd ~/scribble
+./scribblec-linmp.sh modules/linmp-scala/src/test/scrib/Game.scr ClientA
+
+
+ Similarly, to implement roles b
+ and c , we can specify respectively the
+ global protocls ClientB
+ and ClientC , and in both cases,
+ use the Scribble-generated classes for the client
+ role p to write our code.
+
+
+
+ Instead, if we want to implement the server, we will
+ need all the Scribble-generated session classes
+ obtained
+ from ClientA , ClientB
+ and ClientC --- but this time, we will
+ need to write our code using those pertaining to the server
+ role q . The reason is intuitive: the
+ game server will need to interact with clients willing to play
+ any role in the game; therefore, the server must implement the
+ server-side of all the necessary protocols.
+
+
+ Implementation Details
+
+
+
+ The Scribble-generated multiparty session classes for the
+ clients playing
+ roles a , b
+ and c are included, respectively,
+ in examples/game/protocol/ClientA.scala , .../ClientB.scala
+ and .../ClientC.scala .
+
+
+ The Scribble-generated binary channel classes are included
+ in examples/game/protocol/Binary.scala .
+ Note that the file also defines some additional message
+ classes, inside the package actor :
+ they are used by the clients to initiate a connection to the
+ server, when using lchannels with
+ the Akka actor-based transport. After establishing the
+ connection, the continuation of such messages allows the
+ server to answer with
+ a PlayA /PlayB /PlayC
+ message, as expected from the Scribble protocol.
+
+
+ the game server and the three clients are available
+ in examples/game/Server.scala , .../ClientA.scala , .../ClientB.scala
+ and .../ClientC.scala .
+ As explained above, the game server uses the
+ Scribble-generated multiparty session protocol classes
+ necessary to interact with all
+ clients a , b
+ and c . Each game client
+ uses its own classes (e.g. , the implementation of
+ role a does not
+ use b
+ or c 's protocol classes).
+
+
+ After creating and delegating a multiparty session to the
+ clients, the game server terminates: it emphasises that after
+ delegation, the clients actually interact directly, and the
+ server does not route their messages.
+
+
+
+ Running the Game Example
+
+
+ To run the game example, you can launch
+ the artifact demo script or follow
+ the lchannels
+ documentation . Note that the demo script will launch the
+ example using distributed Akka actor-based channels;
+ the lchannels documentation also
+ includes a version where the server and clients run as
+ local threads, using a non-distributed message transport.
+
+
+ Example: Three-Buyer Protocol
+
+
+ This is a widely-used example in MPST literature, inspired by
+ a W3C Web Services
+ Choreography use case (C-UC-001 Travel Agent). We use the
+ version presented in the following paper:
+
+ M. Coppo, M. Dezani-Ciancaglini, N. Yoshida, L. Padovani.
+ "Global Progress for Dynamically Interleaved Multiparty Sessions".
+ Mathematical Structures in Computer Science, 2016
+ (DOI ) .
+
+
+
+ Quoting from the paper:
+
+
+
+
+ The overall scenario, involving a Seller
+ (s ), Alice
+ (a ), Bob
+ (b ) and Carol
+ (c ), proceeds as follows.
+
+
+
+ Alice sends a book title to Seller, then Seller sends back a
+ quote to Alice and Bob. Then Alice tells Bob how much she
+ can contribute.
+
+
+ If the price is within Bob’s budget, Bob notifies both
+ Seller and Alice he accepts, then sends his address, and
+ Seller sends back the delivery date.
+
+
+ If the price exceeds the budget, Bob asks Carol to
+ collaborate together by establishing a new session. Then Bob
+ sends how much Carol must pay, then delegates the remaining
+ interactions with Alice and Seller to Carol.
+
+
+ If the rest of the price is within Carol’s budget, Carol
+ accepts the quote and notifies Alice, Bob and Seller, and
+ continues the rest of the protocol with Seller and Alice
+ transparently, as if she were Bob. Otherwise she notifies
+ Alice, Bob and Seller to quit the protocol.
+
+
+
+
+
+ Similarly to the multiparty game , this example
+ includes a three-party session --- here, involving the Seller
+ and the two buyers Alice and Bob. Depending on Alice's choice,
+ a third buyer (Carol) could be transparently involved by Bob,
+ using session delegation.
+
+
+
+ The Scribble specification of this example is available
+ in /home/osboxes/scribble/modules/linmp-scala/src/test/scrib/ThreeBuyer.scr
+ (and also
+ here ):
+
+
+
+global protocol PlayAlice(role alice, role seller) {
+ PlayAlice(TwoBuyer@alice) from seller to alice;
+}
+
+global protocol PlayBob(role bob, role seller) {
+ PlayBob(TwoBuyer@bob) from seller to bob;
+}
+
+global protocol TwoBuyer(role alice, role bob, role seller) {
+ Title(String) from alice to seller;
+ QuoteA(Int) from seller to alice;
+ QuoteB(Int) from seller to bob;
+ ShareA(Int) from alice to bob;
+ do TwoBuyerChoice(alice, bob, seller);
+}
+
+aux global protocol TwoBuyerChoice(role alice, role bob, role seller) {
+ choice at bob {
+ OkA() from bob to alice;
+ OkS() from bob to seller;
+ Address(String) from bob to seller;
+ Deliver(ZonedDateTime) from seller to bob;
+ } or {
+ QuitA() from bob to alice;
+ QuitS() from bob to seller;
+ }
+}
+
+
+global protocol Delegation(role carol, role bob) {
+ Contrib(Int) from bob to carol; // Should be the Int on line 19
+ Delegate(TwoBuyerChoice@bob) from bob to carol;
+ choice at carol {
+ OkC() from carol to bob;
+ } or {
+ QuitC() from carol to bob;
+ }
+}
+
+
+ We model this example by letting the Seller behave similarly to
+ the server in the multiparty game . The Seller
+ will wait for Alice's and Bob's connections, and then it will
+ create a three-party session (based on
+ the TwoBuyer protocol, on line 9)
+ involving the Seller itself, Alice and Bob. For this purpose,
+ the Seller first establishes binary sessions with Alice and Bob
+ (based on the PlayAlice
+ and PlayBob protocols, on lines 1 and
+ 5); after they are connected, the Seller sends them
+ the PlayAlice
+ and PlayBob messages (lines 2 and 6),
+ using delegation to let them join the three-party session.
+
+
+
+ The global protocol Delegation only
+ involves Carol and Bob, and is used by the former to let Carol
+ know how much she should contribute, and then pass her what is
+ left of Bob's duties in the TwoBuyer
+ session (specifically, Bob delegates
+ the TwoBuyerChoice part of the session).
+
+
+
+ Generating and Using the Session Classes
+
+
+ The Scribble specification above contains multiple global
+ protocols, and each one can be used to generate multiparty
+ protocol classes. Assume that we want to implement a Scala
+ program that talks to the Seller, and then plays
+ role Alice : to do so, we can generate the
+ session classes for the global
+ protocol PlayAlice , and write our
+ program using those pertaining to role alice .
+
+
+
+cd ~/scribble
+./scribblec-linmp.sh modules/linmp-scala/src/test/scrib/ThreeBuyer.scr PlayAlice
+
+
+ Similarly, to implement role bob , we
+ can specify the global
+ protocls PlayBob , and use the
+ Scribble-generated classes for role
+ bob to write our code. Note, however,
+ that to fully implement Bob and his interaction with Carol, we
+ will also need bob 's session classes
+ generated from the Delegation global
+ protocol.
+
+
+
+ Instead, if we want to implement the Seller, we will
+ need all the Scribble-generated session classes
+ obtained from PlayAlice
+ and PlayBob , using those pertaining to
+ role seller . The reason is that
+ Seller will need to interact with both Alice and Bob, and must
+ therefore implement the "other side" of both their protocols.
+
+
+
+ Finally, if we want to implement Carol, we need to specify the
+ global protocol Delegation , and then
+ use carol 's session classes.
+
+
+ Implementation Details
+
+
+ This implementation adopts several solutions already seen in
+ the game example .
+
+
+
+
+ The Scribble-generated multiparty session classes for Seller, Alice,
+ Bob and Carol are included, respectively,
+ in examples/threebuyer/protocol/Seller.scala ,
+ .../Alice.scala , .../Bob.scala
+ and .../Carol.scala .
+
+
+ The Scribble-generated binary channel classes are included
+ in examples/threebuyer/protocol/Binary.scala .
+ Note that the file also defines some additional message
+ classes, inside the package actor :
+ they are used with the lchannels
+ Akka-based transport, to initiate connections between
+ Alice/Bob and the Seller, and also (when necessary) between
+ Bob and Carol. After establishing such connections, the
+ continuation of such messages allow to send/receive
+ PlayAlice /PlayBob
+ and Contrib messages, as expected
+ from the Scribble protocol.
+
+
+ the Seller, Alice, Bob and Carol source code is available
+ in examples/threebuyer/Seller.scala , .../Alice.scala , .../Bob.scala
+ and .../Carol.scala .
+ As explained above, the Seller uses the
+ Scribble-generated multiparty session protocol classes needed
+ to interact with both alice
+ and bob ; notably, it
+ does not have any knowledge about
+ carol , because she might
+ transparently implement part of Bob's session. Alice and
+ Bob use their own classes (i.e. , the implementation
+ of role bob does not
+ use alice 's protocol classes). Bob
+ and Carol, instead, share several session class definitions,
+ to realise the session delegation.
+
+
+ Alice's implementation lets the user choose which book to buy:
+ this allows to observe the various scenarios of the protocol,
+ that might involve Carol, or not.
+
+
+
+ Running the ThreeBuyer Example
+
+
+ To run the game example, you can launch
+ the artifact demo script or follow
+ the lchannels
+ documentation . Note that the demo script will launch the
+ example using distributed Akka actor-based channels;
+ the lchannels documentation also
+ includes a version where the server and clients run as
+ local threads, using a non-distributed message transport.
+
+
+ Notes on Scribble with Scala API Extension
+
+ Implementation
+
+
+
+ Known Limitations
+
+
+
+ The error messages generated by Scribble can be a bit obscure,
+ and require the reader to be familiar with the theory of our
+ ECOOP'17 paper,
+ and other
+ Scribble papers .
+
+
+ Session and π-calculus typing systems
+ are structural , whereas the Scala type system
+ is nominal . Encoding the types of the former into
+ those of the latter requires introducing naming conventions
+ and namespaces. This can be done in many ways; our current
+ approach tries to be as direct as possible, but imposes some
+ restrictions on message labels: see
+ e.g. this
+ example , that terminates with an error about incompatible
+ Scala class definitions.
+
+
+ Some autogenerated class names can be quite long, as mentioned
+ in the HTTP example : e.g. , a choice among
+ messages A , B , C ,... will
+ be called AOrBOrC... . Ideally,
+ Scribble should provide a way to annotate choices, giving them
+ a human-readable name that will then be used for autogenerated
+ classes. This would also allow to address the message label
+ restrictions mentioned above.
+
+
+
+
+ Building Scribble-Scala from Source
+
+ Prerequisites
+
+
+
+ Git
+
+
+ A Java 8 compiler
+
+
+ Apache Maven
+
+
+
+ Command Line Instructions
+
+
+
+
+ If all goes well, you will finally see a report like this:
+
+
+
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Reactor Summary:
+ [INFO]
+ [INFO] Scribble .......................................... SUCCESS [7.924s]
+ [INFO] Scribble::Modules::Core ........................... SUCCESS [3:29.963s]
+ [INFO] Scribble::Modules::Parser ......................... SUCCESS [7.706s]
+ [INFO] Scribble::Modules::CLI ............................ SUCCESS [55.630s]
+ [INFO] linmp-scala ....................................... SUCCESS [1.763s]
+ [INFO] Scribble::Distribution ............................ SUCCESS [2.364s]
+ [INFO] Scribble::Modules::Demos .......................... SUCCESS [0.145s]
+ [INFO] ------------------------------------------------------------------------
+ [INFO] BUILD SUCCESS
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Total time: 4:45.961s
+ [INFO] Finished at: Thu Jun 22 22:32:21 BST 2017
+ [INFO] Final Memory: 30M/203M
+ [INFO] ------------------------------------------------------------------------
+
+
+
+ Scribble-Scala is now ready to use via the scribblec-linmp.sh script in the project root directory, e.g. , following the instructions here .
+
+
+
+
diff --git a/docs/user/Scribble-Java-tutorial_files/fsm-Adder-C.png b/docs/user/Scribble-Java-tutorial_files/fsm-Adder-C.png
new file mode 100644
index 0000000..26c670f
Binary files /dev/null and b/docs/user/Scribble-Java-tutorial_files/fsm-Adder-C.png differ
diff --git a/docs/user/Scribble-Java-tutorial_files/prettify-scribble.js b/docs/user/Scribble-Java-tutorial_files/prettify-scribble.js
new file mode 100644
index 0000000..44ec706
--- /dev/null
+++ b/docs/user/Scribble-Java-tutorial_files/prettify-scribble.js
@@ -0,0 +1,1478 @@
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ *
+ *
+ * For a fairly comprehensive set of languages see the
+ * README
+ * file that came with this source. At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ *
+ * Usage:
+ * include this source file in an html page via
+ * {@code }
+ * define style rules. See the example page for examples.
+ * mark the {@code } and {@code } tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code } tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ *
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code } or {@code } element to specify the
+ * language, as in {@code }. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ *
+ * Change log:
+ * cbeust, 2006/08/22
+ *
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ *
+ * @requires console
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window */
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+(function () {
+ // Keyword lists for various languages.
+ // We use things that coerce to strings to make them compact when minified
+ // and to defeat aggressive optimizers that fold large string constants.
+ var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
+ var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
+ "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
+ "static,struct,switch,typedef,union,unsigned,void,volatile"];
+ var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
+ "new,operator,private,protected,public,this,throw,true,try,typeof"];
+ var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
+ "concept,concept_map,const_cast,constexpr,decltype," +
+ "dynamic_cast,explicit,export,friend,inline,late_check," +
+ "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
+ "template,typeid,typename,using,virtual,where"];
+ var JAVA_KEYWORDS = [COMMON_KEYWORDS,
+ "abstract,boolean,byte,extends,final,finally,implements,import," +
+ "instanceof,null,native,package,strictfp,super,synchronized,throws," +
+ "transient"];
+ var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
+ "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
+ "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
+ "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
+ "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
+ var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
+ "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
+ "true,try,unless,until,when,while,yes";
+ var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
+ "debugger,eval,export,function,get,null,set,undefined,var,with," +
+ "Infinity,NaN"];
+ var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
+ "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
+ "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
+ var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
+ "elif,except,exec,finally,from,global,import,in,is,lambda," +
+ "nonlocal,not,or,pass,print,raise,try,with,yield" +
+ "False,True,None"];
+ var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
+ "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
+ "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
+ "BEGIN,END"];
+ var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
+ "function,in,local,set,then,until"];
+ var SCRIBBLE_KEYWORDS = "import,as,protocol,role,from,to,choice,rec,or,type,try,interrupt,at,continue,package,module,include,interruptible,by,with,sig,instantiates,spawns";
+ var ALL_KEYWORDS = [
+ CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
+ PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS, SCRIBBLE_KEYWORDS];
+ var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
+
+ // token style names. correspond to css classes
+ /**
+ * token style for a string literal
+ * @const
+ */
+ var PR_STRING = 'str';
+ /**
+ * token style for a keyword
+ * @const
+ */
+ var PR_KEYWORD = 'kwd';
+ /**
+ * token style for a comment
+ * @const
+ */
+ var PR_COMMENT = 'com';
+ /**
+ * token style for a type
+ * @const
+ */
+ var PR_TYPE = 'typ';
+ /**
+ * token style for a literal value. e.g. 1, null, true.
+ * @const
+ */
+ var PR_LITERAL = 'lit';
+ /**
+ * token style for a punctuation string.
+ * @const
+ */
+ var PR_PUNCTUATION = 'pun';
+ /**
+ * token style for a punctuation string.
+ * @const
+ */
+ var PR_PLAIN = 'pln';
+
+ /**
+ * token style for an sgml tag.
+ * @const
+ */
+ var PR_TAG = 'tag';
+ /**
+ * token style for a markup declaration such as a DOCTYPE.
+ * @const
+ */
+ var PR_DECLARATION = 'dec';
+ /**
+ * token style for embedded source.
+ * @const
+ */
+ var PR_SOURCE = 'src';
+ /**
+ * token style for an sgml attribute name.
+ * @const
+ */
+ var PR_ATTRIB_NAME = 'atn';
+ /**
+ * token style for an sgml attribute value.
+ * @const
+ */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ * @const
+ */
+ var PR_NOCODE = 'nocode';
+
+
+
+/**
+ * A set of tokens that can precede a regular expression literal in
+ * javascript
+ * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
+ * has the full list, but I've removed ones that might be problematic when
+ * seen in languages that don't support regular expression literals.
+ *
+ * Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ *
The link a above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ * @const
+ */
+var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
+
+// CAVEAT: this does not properly handle the case where a regular
+// expression immediately follows another since a regular expression may
+// have flags for case-sensitivity and the like. Having regexp tokens
+// adjacent is not valid in any language I'm aware of, so I'm punting.
+// TODO: maybe style special characters inside a regexp as punctuation.
+
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union of the sets of strings matched by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ var escapeCharToCodeUnit = {
+ 'b': 8,
+ 't': 9,
+ 'n': 0xa,
+ 'v': 0xb,
+ 'f': 0xc,
+ 'r': 0xd
+ };
+
+ function decodeEscape(charsetPart) {
+ var cc0 = charsetPart.charCodeAt(0);
+ if (cc0 !== 92 /* \\ */) {
+ return cc0;
+ }
+ var c1 = charsetPart.charAt(1);
+ cc0 = escapeCharToCodeUnit[c1];
+ if (cc0) {
+ return cc0;
+ } else if ('0' <= c1 && c1 <= '7') {
+ return parseInt(charsetPart.substring(1), 8);
+ } else if (c1 === 'u' || c1 === 'x') {
+ return parseInt(charsetPart.substring(2), 16);
+ } else {
+ return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
+ ch = '\\' + ch;
+ }
+ return ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.length - 1).match(
+ new RegExp(
+ '\\\\u[0-9A-Fa-f]{4}'
+ + '|\\\\x[0-9A-Fa-f]{2}'
+ + '|\\\\[0-3][0-7]{0,2}'
+ + '|\\\\[0-7]{1,2}'
+ + '|\\\\[\\s\\S]'
+ + '|-'
+ + '|[^-\\\\]',
+ 'g'));
+ var groups = [];
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
+ groups.push(p);
+ } else {
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ // This case handling is too simplistic.
+ // It does not deal with non-latin case folding.
+ // It works for latin source code identifiers though.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [NaN, NaN];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+ out.push.apply(out, groups);
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/emd of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (capturedGroups[groupIndex] === undefined) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[groupIndex];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groups to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+
+ /**
+ * Split markup into a string of source code and an array mapping ranges in
+ * that string to the text nodes in which they appear.
+ *
+ *
+ * The HTML DOM structure:
+ *
+ * (Element "p"
+ * (Element "b"
+ * (Text "print ")) ; #1
+ * (Text "'Hello '") ; #2
+ * (Element "br") ; #3
+ * (Text " + 'World';")) ; #4
+ *
+ *
+ * corresponds to the HTML
+ * {@code
print 'Hello ' + 'World';
}.
+ *
+ *
+ * It will produce the output:
+ *
+ * {
+ * sourceCode: "print 'Hello '\n + 'World';",
+ * // 1 2
+ * // 012345678901234 5678901234567
+ * spans: [0, #1, 6, #2, 14, #3, 15, #4]
+ * }
+ *
+ *
+ * where #1 is a reference to the {@code "print "} text node above, and so
+ * on for the other text nodes.
+ *
+ *
+ *
+ * The {@code} spans array is an array of pairs. Even elements are the start
+ * indices of substrings, and odd elements are the text nodes (or BR elements)
+ * that contain the text for those substrings.
+ * Substrings continue until the next index or the end of the source.
+ *
+ *
+ * @param {Node} node an HTML DOM subtree containing source-code.
+ * @return {Object} source code and the text nodes in which they occur.
+ */
+ function extractSourceSpans(node) {
+ var nocode = /(?:^|\s)nocode(?:\s|$)/;
+
+ var chunks = [];
+ var length = 0;
+ var spans = [];
+ var k = 0;
+
+ var whitespace;
+ if (node.currentStyle) {
+ whitespace = node.currentStyle.whiteSpace;
+ } else if (window.getComputedStyle) {
+ whitespace = document.defaultView.getComputedStyle(node, null)
+ .getPropertyValue('white-space');
+ }
+ var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
+
+ function walk(node) {
+ switch (node.nodeType) {
+ case 1: // Element
+ if (nocode.test(node.className)) { return; }
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ walk(child);
+ }
+ var nodeName = node.nodeName;
+ if ('BR' === nodeName || 'LI' === nodeName) {
+ chunks[k] = '\n';
+ spans[k << 1] = length++;
+ spans[(k++ << 1) | 1] = node;
+ }
+ break;
+ case 3: case 4: // Text
+ var text = node.nodeValue;
+ if (text.length) {
+ if (!isPreformatted) {
+ text = text.replace(/[ \t\r\n]+/g, ' ');
+ } else {
+ text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
+ }
+ // TODO: handle tabs here?
+ chunks[k] = text;
+ spans[k << 1] = length;
+ length += text.length;
+ spans[(k++ << 1) | 1] = node;
+ }
+ break;
+ }
+ }
+
+ walk(node);
+
+ return {
+ sourceCode: chunks.join('').replace(/\n$/, ''),
+ spans: spans
+ };
+ }
+
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ sourceCode: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ var notWs = /\S/;
+
+ /**
+ * Given an element, if it contains only one child element and any text nodes
+ * it contains contain only space characters, return the sole child element.
+ * Otherwise returns undefined.
+ *
+ * This is meant to return the CODE element in {@code
} when
+ * there is a single child element that contains all the non-space textual
+ * content, but not to return anything where there are multiple child elements
+ * as in {@code ...... } or when there
+ * is textual content.
+ */
+ function childContentWrapper(element) {
+ var wrapper = undefined;
+ for (var c = element.firstChild; c; c = c.nextSibling) {
+ var type = c.nodeType;
+ wrapper = (type === 1) // Element Node
+ ? (wrapper ? element : c)
+ : (type === 3) // Text Node
+ ? (notWs.test(c.nodeValue) ? element : wrapper)
+ : wrapper;
+ }
+ return wrapper === element ? undefined : wrapper;
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Working with Scribble
+
How to describe, verify, generate artifacts and monitor protocols
+
+
+
+
+
+
+
+
+
+
+
+
+
This section describes how to use the Web tooling within the Scribble project. These tools can be downloaded
+using instructions in the Downloads section.
+
+
+
Installing/Starting the Server
+
+
The Web tooling distribution provides a complete server for running the Web tooling. Simply unpack the distribution
+and running the following command from the root folder of the distribution, to start the server:
+
+
+
+
By default, the folder containing the Scribble modules will be contained within the user’s home directory, under a hidden
+sub-folder called .scribble .
+
+
+
If you wish to change this location, then include the path when starting the server:
+
+
+
+
bin/standalone.sh -DSCRIBBLE_PATH=<location of scribble modules>
+
+
+
+
Once the server has been started, simply start a web browser and navigate to the URI: http://localhost:8080
+
+
+
+
Using the User Interface
+
+
The initial page shown within the Web application (located at http://localhost:8080 ) is the list of modules.
+
+
+
At the top of the page, there is a text field that can be used to specify a new module, as a dot separate name. For example, dept.finance.Accounting .
+
+
+
Any existing modules will be listed in the main part of the page, with a trash symbol at the end of each module’s line, which can be used to delete the module.
+
+
+
When either a new module is created, or an existing module selected, the browser will navigate to the editor page
+for the module.
+
+
+
At the top of the editor page, a description text field is provided to enable a description of the module to be
+provided.
+
+
+
The main body of the page is the editor for the module definition. Any keywords are colour coded.
+
+
+
Validation
+
+
When any changes are applied to the module definition and saved, this will trigger a validation step which may
+result in any warnings or errors being displayed below the editor window. For some errors, the location of the
+error can be highlighted by selecting the error message.
+
+
+
+
Roles
+
+
When a valid definition has been created, with a set of roles, then the role names (that are associated with a
+local projection) will be listed on the right hand side above the editor window.
+
+
+
By selecting a role name, the browser will navigate to the local projection of the global protocol.
+
+
+
+
+
+
+
+
+This window currently displays a graph (dot notation) that is hardcoded currently, just to show what may
+also be possible to derive from the local projection. Further work is required.
+
+
+
+
+
+
+
+
+
+
+
+Documentation for the older (no longer developed or supported) Eclipse and Command Line tools can be
+found here .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+