/*
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you 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.
*/

@charset "UTF-8";

/* thanks for inspiration:
    yui.yahooapis.com/2.8.1/build/base/base.css
    camendesign.com/design/
    praegnanz.de/weblog/htmlcssjs-kickstart
    paulirish.com
    html5doctor.com  (Eric Meyer & Richard Clark)
 */
/* pull in the style partials */
/*
 * Custom mixins for the theme.
 *
 */
/*
TODO: hacky mixin until compass supports variable multi-arguments?
SEE: https://groups.google.com/group/compass-users/browse_thread/thread/df09f674eafc3591/b4e95af76fc72145?pli=1
*/
/*
 * Color variables for the theme.
 *
 */
/*
 * Your run-of-the-mill reset CSS, inspired by:
 *
 *   yui.yahooapis.com/2.8.1/build/base/base.css
 *   camendesign.com/design/
 *   praegnanz.de/weblog/htmlcssjs-kickstart
 *   paulirish.com
 *   html5doctor.com  (Eric Meyer & Richard Clark)
 *
 */
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, figure, footer, header, hgroup, menu, nav, section, menu, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
}

article, aside, figure, footer, header, hgroup, nav, section {
  display: block;
}

nav ul {
  list-style: none;
}

blockquote, q {
  quotes: none;
}

blockquote:before, blockquote:after, q:before, q:after {
  content: '';
  content: none;
}

ins {
  background-color: #ff9;
  color: #000;
  text-decoration: none;
}

mark {
  background-color: #ff9;
  color: #000;
  font-style: italic;
  font-weight: bold;
}

del {
  text-decoration: line-through;
}

abbr[title], dfn[title] {
  border-bottom: 1px dotted #000;
  cursor: help;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

hr {
  clear: both;
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #cccccc;
  margin: 1em 0;
  padding: 0;
}

input, select {
  vertical-align: middle;
  background: #fff;
}

/*
 * Setup a minimal, baseline CSS, layered on top of a reset
 * to define the default styles we've come to expect. Inspired by:
 *
 *   yui.yahooapis.com/2.8.1/build/base/base.css
 *   camendesign.com/design/
 *   praegnanz.de/weblog/htmlcssjs-kickstart
 *   paulirish.com
 *   html5doctor.com  (Eric Meyer & Richard Clark)
 *
 */
body {
  font: 13px sans-serif;
  *font-size: small;
  *font: x-small;
  line-height: 1.22;
}

table {
  font-size: inherit;
  font: 100%;
}

select, input, textarea {
  font: 99% sans-serif;
  background-color: white;
}

pre, code, kbd, samp {
  font-family: monospace, sans-serif;
}

body, select, input, textarea {
  color: #333333;
}

h1, h2, h3, h4, h5, h6 {
  font-weight: bold;
  text-rendering: optimizeLegibility;
}

html {
  -webkit-font-smoothing: antialiased;
}

.link {
  color: #0077aa;
}

ul {
  margin-left: 30px;
  margin-bottom: 1em;
}

ol {
  margin-left: 30px;
  list-style-type: decimal;
}

small {
  font-size: 85%;
}

strong, th {
  font-weight: bold;
}

td, td img {
  vertical-align: top;
}

sub {
  vertical-align: sub;
  font-size: smaller;
}

sup {
  vertical-align: super;
  font-size: smaller;
}

pre {
  padding: 15px;
  white-space: pre;
  white-space: pre-wrap;
  white-space: pre-line;
  word-wrap: break-word;
}

input[type="radio"] {
  vertical-align: text-bottom;
}

input[type="checkbox"] {
  vertical-align: bottom;
  *vertical-align: baseline;
}

.ie6 input {
  vertical-align: text-bottom;
}

input[type=button], input[type=submit], button, .link {
  cursor: pointer;
}

::-moz-selection {
  background: #0077aa;
  color: #fff;
  text-shadow: none;
}

::selection {
  background: #0077aa;
  color: #fff;
  text-shadow: none;
}

a:link {
  -webkit-tap-highlight-color: #0077aa;
}

a:active, a:focus {
  outline: none;
}

html {
  overflow-y: scroll;
}

button {
  width: auto;
  overflow: visible;
}

.ie7 img {
  -ms-interpolation-mode: bicubic;
}

caption {
  display: none;
}

h2.title, #site-header nav {
  font-weight: normal;
}

/*
 * General CSS rules governing high-level elements.
 *
 */
body {
  line-height: 18px;
  color: #555555;
  background-color: white;
}

a {
  margin: 0;
  padding: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  outline: none;
  color: #0077aa;
  text-decoration: none;
}
a:visited {
  color: #006699;
}
a:hover {
  color: #0099cc;
}
a:active {
  color: #0077aa;
}
a:hover {
  text-decoration: underline;
}
a:hover, a:active {
  outline: none;
}

h1, h2 {
  font-size: 18px;
  line-height: 36px;
  margin-bottom: 20px;
}

h1 small {
  text-transform: none;
  margin-left: 20px;
  font: 13px sans-serif;
  line-height: 18px;
}

.caption {
  font-size: 12px;
  color: #333333;
  display: block;
}

.contain {
  position: relative;
}

p {
  margin-bottom: 20px;
}

hr {
  padding: 2px;
  border: 1px solid #aaaaaa;
  background-color: #e5e5e5;
  -moz-border-radius: 2px;
  -webkit-border-radius: 2px;
  -o-border-radius: 2px;
  -ms-border-radius: 2px;
  -khtml-border-radius: 2px;
  border-radius: 2px;
}
hr.hairline {
  padding: 0;
  border: none;
  border-top: 1px solid #cccccc;
  background-color: transparent;
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  -o-border-radius: 0;
  -ms-border-radius: 0;
  -khtml-border-radius: 0;
  border-radius: 0;
}

pre {
  overflow: auto;
  white-space: pre;
}

td, td img {
  vertical-align: baseline;
}

.social {
  margin-bottom: 20px;
}
.social a {
  margin: 0 0 0 10px;
}
.social a img {
  vertical-align: middle;
}

.tool-count {
  display: block;
  position: absolute;
  z-index: 2;
  height: 13px;
  width: 13px;
  line-height: 13px;
  bottom: 17px;
  left: 64%;
  font-size: 11px;
  font-weight: bold;
  color: white;
  padding: 1px;
  border: 1px solid #069;
  background-color: #069;
  -moz-border-radius: 2px;
  -webkit-border-radius: 2px;
  -o-border-radius: 2px;
  -ms-border-radius: 2px;
  -khtml-border-radius: 2px;
  border-radius: 2px;
}

.nowrap {
  white-space: nowrap;
}

.hidden {display:none;}

blockquote {
  border-left: 1px solid #cccccc;
  margin-left: 1em;
  padding-left: 1em;
}

/*
 * Style elements in the main header and footer areas.
 *
 */
#site-header, #page-header, #page-body, #page-footer, #site-footer {
  margin: 0 auto;
  overflow: hidden;
  *zoom: 1;
  width: 960px;
  margin-bottom: 20px;
}

#page-body.wide, #site-footer .content {
  width: 940px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

/* shared */
#site-header a, #site-footer a {
  color: #555555;
  margin-left: 1em;
  text-decoration: underline;
}
#site-header a:visited, #site-footer a:visited {
  color: #555555;
}
#site-header a:focus, #site-footer a:focus {
  color: #333333;
}
#site-header a:hover, #site-footer a:hover {
  color: #333333;
}
#site-header a:active, #site-footer a:active {
  color: #555555;
}
#site-header a:first-child, #site-footer a:first-child {
  margin-left: 0;
}

/* site header */
#site-header {
  -moz-border-radius-bottomleft: 4px;
  -webkit-border-bottom-left-radius: 4px;
  -o-border-bottom-left-radius: 4px;
  -ms-border-bottom-left-radius: 4px;
  -khtml-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -webkit-border-bottom-right-radius: 4px;
  -o-border-bottom-right-radius: 4px;
  -ms-border-bottom-right-radius: 4px;
  -khtml-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
  background-color: #e5e5e5;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background-image: linear-gradient(top, #ffffff 0%, #cccccc 100%);
  border: 1px solid #aaaaaa;
  background-color: #cccccc;
  position: relative;
  border-top: none !important;
  z-index: 2;
}
#site-header .wrapper {
  background-repeat: repeat;
  padding: 0 10px;
  min-height: 40px;
}
#site-header .wrapper p {
  margin: 0;
}
#site-header input {
  position: absolute;
  left: 170px;
  top: 7px;
  margin: 0;
  width: 280px;
}
#site-header nav {
  margin-left: 20px;
  padding: 12px 0 0 0;
  text-shadow: rgba(0, 0, 0, 0.6) 0 0 0, rgba(255, 255, 255, 0.6) 0 1px 0;
}

/* nav */
.nav-left, .nav-logo  {
  float: left;
}
.nav-main {
  float: right;
}
img.nav-logo {
  margin-top: 13px;
}

/* logo */
.logo {
  width: 138px;
  position: absolute;
  top: 10px;
  left: 10px;
  height: 20px;
}
.logo.reversed h1 {
  display: block;
  text-indent: -999em;
  overflow: hidden;
  background-repeat: no-repeat;
}
.logo h1 {
  display: block;
  text-indent: -999em;
  overflow: hidden;
  background-repeat: no-repeat;
  color: transparent;
}

/* footer */
#site-footer {
  color: #555555;
}

#copyright {
  width: 220px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  text-align: right;
}

#site-footer nav {
  width: 700px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  text-align: left;
}

#site-notification {
  margin: 0 auto;
  margin-bottom: 20px;
  *zoom: 1;
  width: 960px;
}
#site-notification .site-message {
  float: none;
  margin: 0;
  margin-left: -2px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  border-width: 1px;
  padding: 17px 20px;
}
#site-notification h1 {
    line-height: normal;
}
#site-notification p {
    width: 90%;
}
#site-notification .btn-close {
  float: right;
  cursor: pointer;
  text-decoration: none;
  margin-top: -26px;
  padding: 2px 25px;
  color: white;
  text-shadow: none;
  border: 1px solid #07a;
  background: #09c;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0099cc), color-stop(100%, #006699));
  background-image: -webkit-linear-gradient(#0099cc 0%, #006699 100%);
  background-image: -moz-linear-gradient(#0099cc 0%, #006699 100%);
  background-image: -o-linear-gradient(#0099cc 0%, #006699 100%);
  background-image: linear-gradient(#0099cc 0%, #006699 100%);
  -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.1);
  -moz-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.1);
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.1);
}
#site-notification .call-to-action {
  float: none;
  text-decoration: none;
  font-size: 85%;
  padding: 2px 10px;
  color: #069;
  margin-left: 6px;
}

/* message */
#messages {
  position: absolute;
  z-index: 100000;
  top: 50px;
  right: 20px;
}

.message {
  -moz-box-shadow: rgba(0, 0, 0, 0.5) 0 4px 40px 0;
  -webkit-box-shadow: rgba(0, 0, 0, 0.5) 0 4px 40px 0;
  -o-box-shadow: rgba(0, 0, 0, 0.5) 0 4px 40px 0;
  box-shadow: rgba(0, 0, 0, 0.5) 0 4px 40px 0;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  opacity: 0.9;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
  display: none;
  padding: 20px;
  width: 301px;
  background-color: #333333;
  border: 2px solid #000;
  margin-bottom: 1em;
  color: #fff;
  cursor: pointer;
}
.message a {
  color: white;
  text-decoration: underline;
}
.message .content {
  margin: 0;
}
.message.error {
  background-color: #8a0f0f;
  border-color: #5c0a0a;
}
.message.confirm {
  background-color: #0f8a0f;
  border-color: #0a5c0a;
}
.message.warning {
  background-color: #d9d926;
  border-color: #adad1f;
  color: #333333;
}
.message.warning a {
  color: #333333;
}
.message.warning header {
  text-shadow: none;
}

.no-js #messages {
  margin: 0 auto;
  overflow: hidden;
  *zoom: 1;
  width: 960px;
  position: static;
}
.no-js .message {
  width: 940px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  -moz-box-shadow: none;
  -webkit-box-shadow: none;
  -o-box-shadow: none;
  box-shadow: none;
  display: block;
  cursor: default;
  margin-bottom: 1em;
  padding: 0;
}
.no-js .message header {
  padding: 20px 20px 0;
}
.no-js .message .content {
  padding: 0 20px 20px;
}
/* modal */
.modal {
  background: rgb(60, 60, 60) none;
  color: #fff;
  border-radius: 10px;
  display: inline-block;
  margin: 0 auto;
  border: 3px solid #292929;
  top: 20px;
  left: 50%;
  margin-left: -312px;
  position: fixed;
  width: 542px;
  z-index: 10001;
  min-height: 300px;
  overflow: auto;
  padding: 25px;
  box-shadow: none;
}
.modal input {
  margin-bottom: 3px;
  padding-left: 2px;
  margin-top: 5px;
  box-shadow: none;
}
.modal .btn input[type=submit] {
  background: white;
  border: none;
}
.modal hr {
  border: none;
  padding: 0;
  background-color: #595454;
}
input.validate_input:valid[type='text'] {
    border: 1px solid #d8ffd5;
    background: #deffdc;
}
input.validate_input:invalid[type='text'] {
    background: #fadad5;
}
.modal-form-error {
    color: white;
    padding: 2px;
    border-radius: 2px;
    font-size: smaller;
    font-weight: 600;
    margin-left: 0.6rem;
}
.modal h1, .modal h2, .modal h3 {
  margin: 0;
  display: block;
}
.modal img {
  height: 335px;
  width: 542px;
  margin: 0 auto 10px;
}
.modal form {
  padding-top: 20px;
}
.modal a {
  color: #fff;
  text-decoration: underline;
}
.modal .codehilite {
  background-color: #777;
}
.modal .hidden_in_modal {
    display: none;
}

.ie7 .modal, .ie8 .modal {
  border: 1px solid black;
}

.markdown_syntax_toc_crumb {
  float: right !important;
  margin-left: 20px;
  display: none;
}

/* forms */
form p {
  overflow: hidden;
  *zoom: 1;
  position: relative;
}

input, textarea, select {
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  display: inline-block;
  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  -o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  border: medium none;
  padding: 5px;
  margin-bottom: 5px;
  margin-left: 2px;
  border: 1px solid #aaaaaa;
}

input[type=radio] {
  border: none !important;
}

.carbon input, .carbon textarea, .carbon select, .dark input, .dark textarea, .dark select {
  border: none;
}

::-webkit-input-placeholder {
  color: #aaaaaa;
}

input:-moz-placeholder {
  color: #aaaaaa;
}

p label {
  display: block;
  padding: 0 0 5px;
}

/* tables */
table {
  width: 100%;
  margin-bottom: 20px;
}
table thead tr {
  background: #e5e5e5;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #e5e5e5));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  background-image: linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  text-shadow: #fff 0 1px 0;
  text-align: left;
}
table thead tr {
  border: 1px solid #aaaaaa;
  color: #555555;
}
table thead tr th, table tr td {
  padding: 5px 10px;
}
table th, table td, table caption {
  vertical-align: middle;
}
table tbody tr td {
  border-bottom: 1px solid #e5e5e5;
  text-align: left;
}
table tbody tr.even td {
  background: #f5f5f5;
}
table tbody tr th[scope=row] {
  text-align: left;
}
table h2 {
  font-size: 14px;
  text-align: left;
  margin: 0;
}
table tfoot tr td {
  font-weight: bold;
}

#search table h2 a {
  font-weight: normal;
}

#search table h2 small {
  font-weight: normal;
  text-transform: none;
  font: 11px/18px sans-serif;
  color: #aaaaaa;
}

#search table td {
  padding: 10px;
}

thead th{
    resize: horizontal;
}

/* buttons - lui */
.btn, button, input[type=submit], input[type=reset], input[type=button] {
  -moz-box-shadow: rgba(255, 255, 255, 0.6) 0 1px 0 0;
  -webkit-box-shadow: rgba(255, 255, 255, 0.6) 0 1px 0 0;
  -o-box-shadow: rgba(255, 255, 255, 0.6) 0 1px 0 0;
  box-shadow: rgba(255, 255, 255, 0.6) 0 1px 0 0;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  background: #e5e5e5;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background-image: linear-gradient(top, #ffffff 0%, #cccccc 100%);
  border: 1px solid #aaaaaa;
  font: 13px sans-serif;
  line-height: 18px;
  font-weight: bold;
  text-shadow: #fff 0 1px;
  text-decoration: none;
  margin: 0 10px 7px 0;
  display: inline;
  padding: 4px 10px 2px;
  overflow: hidden;
  color: #555555;
  text-align: center;
  position: relative;
  min-height: 19px;
  height: auto;
  float: left;
}
.hopscotch-bubble button {
  float: initial;
}

button, input[type="submit"], input[type="reset"], input[type="button"] {
  padding-bottom: 4px;
}

select[disabled], input[disabled], textarea[disabled], button[disabled] {
  color: #aaaaaa;
}

a.btn {
  color: #555555;
}
a.btn:visited {
  color: #555555;
}
a.btn:hover {
  color: #555555;
}
a.btn:active {
  color: #555555;
}

.btn-set {
  display: block;
  float: left;
  font: 1em/1.3em sans-serif;
}
.btn-set .btn {
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  -o-border-radius: 0;
  -ms-border-radius: 0;
  -khtml-border-radius: 0;
  border-radius: 0;
  border: 1px solid #aaaaaa !important;
}
.btn-set .btn:first-child {
  -moz-border-radius-topleft: 4px;
  -webkit-border-top-left-radius: 4px;
  -o-border-top-left-radius: 4px;
  -ms-border-top-left-radius: 4px;
  -khtml-border-top-left-radius: 4px;
  border-top-left-radius: 4px;
  -moz-border-radius-bottomleft: 4px;
  -webkit-border-bottom-left-radius: 4px;
  -o-border-bottom-left-radius: 4px;
  -ms-border-bottom-left-radius: 4px;
  -khtml-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  margin: 0 -1px 0 0;
}
.btn-set .btn:last-child {
  -moz-border-radius-topright: 4px;
  -webkit-border-top-right-radius: 4px;
  -o-border-top-right-radius: 4px;
  -ms-border-top-right-radius: 4px;
  -khtml-border-top-right-radius: 4px;
  border-top-right-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -webkit-border-bottom-right-radius: 4px;
  -o-border-bottom-right-radius: 4px;
  -ms-border-bottom-right-radius: 4px;
  -khtml-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
  margin: 0 10px 0 -11px;
}
.btn-set.duo .btn:first-child {
  margin: 0 -1px 0 0;
}
.btn-set.duo .btn:last-child {
  margin: 0 0 0 0;
}

.btn-bar, #top_nav {
  display: block;
  clear: both;
  padding: 0px 10px 0 10px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  text-decoration: none;
  min-width: 1em;
  text-align: center;
  position: relative;
  margin: 0 0 20px;
}
.btn-bar.pop, .pop#top_nav {
  height: 150px;
}
.btn-bar .btn, #top_nav .btn {
  margin: 0 10px 0 0;
}
.btn-bar hr, #top_nav hr {
  margin: 0;
  visibility: hidden;
}
.btn-bar a, #top_nav a {
  position: relative;
  text-decoration: none;
}
.btn-bar a:hover, #top_nav a:hover {
  opacity: .8;
}
.btn-bar .btn-set, #top_nav .btn-set {
  font: 13px/18px sans-serif;
}
.btn-bar h2, #top_nav h2 {
  float: left;
  padding: .2em .5em 0 .5em;
  margin-bottom: 0;
  text-shadow: #fff 0 1px 0;
}
.btn-bar .tleft, #top_nav .tleft {
  float: left;
  padding: .3em .5em 0 .5em;
}

.btn:hover, button:hover, .btn-set .btn.ico:hover, input[type=submit]:hover, input[type=reset]:hover, input[type=button]:hover {
  cursor: pointer;
  text-decoration: none;
  border: 1px solid #aaaaaa !important;
  background: #eee;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%);
  background-image: linear-gradient(top, #ffffff 0%, #eeeeee 100%);
}
.hopscotch-bubble button:hover {
  border-color: transparent !important;
}
.hopscotch-bubble button.hopscotch-bubble-close:hover {
  border-width: 0 !important;
}

button[disabled]:hover, input[type=submit][disabled]:hover, input[type=reset][disabled]:hover, input[type=button][disabled]:hover {
  cursor: auto;
  background: #e5e5e5;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background-image: linear-gradient(top, #ffffff 0%, #cccccc 100%);
  border: 1px solid #aaaaaa;
}

li.active, .btn.active, .btn:active:hover, button:active:hover, .btn-set .btn.ico:active:hover, input[type=submit]:active:hover, input[type=reset]:active:hover, input[type=button]:active:hover {
  text-shadow: none;
  background: rgba(0, 0, 0, 0.1);
  -moz-box-shadow: rgba(0, 0, 0, 0.1) 0 -2px 5px inset,rgba(0, 0, 0, 0.2) 0 1px 3px inset;
  -webkit-box-shadow: rgba(0, 0, 0, 0.1) 0 -2px 5px inset,rgba(0, 0, 0, 0.2) 0 1px 3px inset;
  -o-box-shadow: rgba(0, 0, 0, 0.1) 0 -2px 5px inset,rgba(0, 0, 0, 0.2) 0 1px 3px inset;
  box-shadow: rgba(0, 0, 0, 0.1) 0 -2px 5px inset,rgba(0, 0, 0, 0.2) 0 1px 3px inset;
}
.hopscotch-bubble button:active:hover {
  box-shadow: none;
  background: transparent url(../../../allura/images/sprite-green.png) -192px -92px no-repeat; // reset to hopscotch.min.css value
}

button[disabled]:active:hover, input[type=submit][disabled]:active:hover, input[type=reset][disabled]:active:hover, input[type=button][disabled]:active:hover {
  text-shadow: #fff 0 1px;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background-image: linear-gradient(top, #ffffff 0%, #cccccc 100%);
  border: 1px solid #aaaaaa;
  -moz-box-shadow: none;
  -webkit-box-shadow: none;
  -o-box-shadow: none;
  box-shadow: none;
}

.btn.link, .btn.link:hover {
  background: none !important;
  border: none !important;
  color: #0077aa !important;
  float: none;
  font-weight: normal !important;
  margin: 5px 0 0;
  padding: 0;
  display: inline-block;
  text-shadow: none !important;
  -moz-box-shadow: none;
  -webkit-box-shadow: none;
  -o-box-shadow: none;
  box-shadow: none;
}

button.btn.link, button.btn.link:hover {
  margin-top: 1px;
}

.btn.link:hover {
  color: #0099cc !important;
  text-decoration: underline;
}

.dark .btn.link, .modal .btn.link {
  color: #fff !important;
  text-decoration: underline;
}

.wide {
  width: 100%;
}

.more {
  width: 520px;
  margin-left: 80px;
}

/* icons */
.fa.upside-down {
  transform: scale(1, -1);
  -moz-transform: scale(1, -1);
  -webkit-transform: scale(1, -1);
}
.btn em {
  text-indent: -9999px;
  position: absolute;
}

a.active {
  color: #0077aa !important;
  text-shadow: white 0 1px 0, #0099cc 0 1px 6px;
}


.x16 {font-size: 16px; width: 16px; height: 16px;}
.x24 {font-size: 24px; width: 24px; height: 24px;}
.x32 {font-size: 32px; width: 32px; height: 32px;}
.x48 {font-size: 48px; width: 48px; height: 48px;}
.x64 {font-size: 64px; width: 64px; height: 64px;}

.modal .icon.close {
  position: absolute;
  top: 10px;
  right: 10px;
  cursor: pointer;
}

/* other media  */
@media print {
  * {
    background: transparent !important;
    color: #333333 !important;
    text-shadow: none;
  }

  a, a:visited {
    color: #333333 !important;
    text-decoration: underline;
  }

  a:after {
    content: " (" attr(href) ")";
  }

  abbr:after {
    content: " (" attr(title) ")";
  }

  .ir a:after {
    content: "";
  }

  /* don't show links for images */
  pre, blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }

  img {
    page-break-inside: avoid;
  }
}

@media all and (orientation:portrait) {}
@media all and (orientation:landscape) {}
@media screen and (max-device-width: 480px) {
  html {
    -webkit-text-size-adjust: none;
    -ms-text-size-adjust: none;
  }
}

/* Grid-Coordinates by Adam Stacoviak
 * Fork me: http://adamstac.com/grid-coordinates */
.grid-container {
  margin: 0 auto;
  overflow: hidden;
  *zoom: 1;
  width: 960px;
}

.nested-grid-container {
  display: inline-block;
  margin-left: -10px;
  margin-right: -10px;
  overflow: hidden;
  *zoom: 1;
  width: auto;
}

.grid-block {
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-1 {
  width: 20px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-2 {
  width: 60px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-3 {
  width: 100px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-4, #sidebar {
  width: 140px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-5 {
  width: 180px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-6 {
  width: 220px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-7 {
  width: 260px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-8 {
  width: 300px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-9 {
  width: 340px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-10 {
  width: 380px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-11 {
  width: 420px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-12 {
  width: 460px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-13 {
  width: 500px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-14 {
  width: 540px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-15 {
  width: 580px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-16 {
  width: 620px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-17 {
  width: 660px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-18 {
  width: 700px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-19 {
  width: 740px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-20 {
  width: 780px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-21 {
  width: 820px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-22 {
  width: 860px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-23 {
  width: 900px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-24 {
  width: 940px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-full {
  width: 940px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}

.grid-prefix-1 {
  padding-left: 40px;
}

.grid-prefix-2 {
  padding-left: 80px;
}

.grid-prefix-3 {
  padding-left: 120px;
}

.grid-prefix-4 {
  padding-left: 160px;
}

.grid-prefix-5 {
  padding-left: 200px;
}

.grid-prefix-6 {
  padding-left: 240px;
}

.grid-prefix-7 {
  padding-left: 280px;
}

.grid-prefix-8 {
  padding-left: 320px;
}

.grid-prefix-9 {
  padding-left: 360px;
}

.grid-prefix-10 {
  padding-left: 400px;
}

.grid-prefix-11 {
  padding-left: 440px;
}

.grid-prefix-12 {
  padding-left: 480px;
}

.grid-prefix-13 {
  padding-left: 520px;
}

.grid-prefix-14 {
  padding-left: 560px;
}

.grid-prefix-15 {
  padding-left: 600px;
}

.grid-prefix-16 {
  padding-left: 640px;
}

.grid-prefix-17 {
  padding-left: 680px;
}

.grid-prefix-18 {
  padding-left: 720px;
}

.grid-prefix-19 {
  padding-left: 760px;
}

.grid-prefix-20 {
  padding-left: 800px;
}

.grid-prefix-21 {
  padding-left: 840px;
}

.grid-prefix-22 {
  padding-left: 880px;
}

.grid-prefix-23 {
  padding-left: 920px;
}

.grid-suffix-1 {
  padding-right: 40px;
}

.grid-suffix-2 {
  padding-right: 80px;
}

.grid-suffix-3 {
  padding-right: 120px;
}

.grid-suffix-4 {
  padding-right: 160px;
}

.grid-suffix-5 {
  padding-right: 200px;
}

.grid-suffix-6 {
  padding-right: 240px;
}

.grid-suffix-7 {
  padding-right: 280px;
}

.grid-suffix-8 {
  padding-right: 320px;
}

.grid-suffix-9 {
  padding-right: 360px;
}

.grid-suffix-10 {
  padding-right: 400px;
}

.grid-suffix-11 {
  padding-right: 440px;
}

.grid-suffix-12 {
  padding-right: 480px;
}

.grid-suffix-13 {
  padding-right: 520px;
}

.grid-suffix-14 {
  padding-right: 560px;
}

.grid-suffix-15 {
  padding-right: 600px;
}

.grid-suffix-16 {
  padding-right: 640px;
}

.grid-suffix-17 {
  padding-right: 680px;
}

.grid-suffix-18 {
  padding-right: 720px;
}

.grid-suffix-19 {
  padding-right: 760px;
}

.grid-suffix-20 {
  padding-right: 800px;
}

.grid-suffix-21 {
  padding-right: 840px;
}

.grid-suffix-22 {
  padding-right: 880px;
}

.grid-suffix-23 {
  padding-right: 920px;
}

.fleft {
  float: left;
  margin-right: 20px;
}

.fright {
  float: right !important;
  margin-left: 20px;
}

.tleft {
  text-align: left;
}

.tright {
  text-align: right;
}

.tcenter {
  text-align: center;
}

.temboss {
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
  color: #bbb;
  padding: 0;
  margin: 10px 0;
  font-weight: bold;
  text-align: center;
  display: block;
}

.emboss {
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  display: inline-block;
  -moz-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  -o-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  background-color: #f5f5f5;
  border: 1px solid #cccccc;
}

.light {
  background-color: #e5e5e5;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background-image: linear-gradient(top, #ffffff 0%, #cccccc 100%);
  border: 1px solid #aaaaaa;
}

.dark {
  background-color: #555555;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #666666), color-stop(100%, #555555));
  background-image: -moz-linear-gradient(top, #666666 0%, #555555 100%);
  background-image: linear-gradient(top, #666666 0%, #555555 100%);
  border: 1px solid #333333;
  color: #fff;
}
.dark hr {
  border: 1px solid #000;
  background-color: #111;
  opacity: .4;
}
.dark a {
  color: #fff;
  text-decoration: underline;
}

/* forge  */
#content_base {
  margin: -1px 0 0;
  background: #e5e5e5;
  border: 1px solid #ccc;
  -moz-border-radius-bottomleft: 4px;
  -webkit-border-bottom-left-radius: 4px;
  -o-border-bottom-left-radius: 4px;
  -ms-border-bottom-left-radius: 4px;
  -khtml-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -webkit-border-bottom-right-radius: 4px;
  -o-border-bottom-right-radius: 4px;
  -ms-border-bottom-right-radius: 4px;
  -khtml-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
}

#sidebar h3 {
  padding: 0 0 0 10px;
}
#sidebar input {
  margin: 14px 0 20px;
  width: 128px;
  position: relative;
  z-index: 2;
}
#sidebar ul {
  border: 1px solid #aaaaaa;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  -moz-box-shadow: white 0 1px 0 0;
  -webkit-box-shadow: white 0 1px 0 0;
  -o-box-shadow: white 0 1px 0 0;
  box-shadow: white 0 1px 0 0;
  margin: 5px 0 20px;
  padding: 0;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #ffffff), color-stop(100%, #e5e5e5));
  background-image: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  background-image: linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
}
#sidebar li {
  list-style: none;
  position: relative;
  border-top: 1px solid #fff;
  border-bottom: 1px solid #aaaaaa;
}
#sidebar li:first-child {
  border-top: medium none !important;
}
#sidebar li:last-child {
  border-bottom: medium none !important;
}
#sidebar li.active {
  border-top: none;
}
#sidebar li .has_small {
  display: inline-block;
  width: 85px;
}
#sidebar li small {
  background-color: #555555;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #666666), color-stop(100%, #555555));
  background-image: -moz-linear-gradient(top, #666666 0%, #555555 100%);
  background-image: linear-gradient(top, #666666 0%, #555555 100%);
  border: 1px solid #333333;
  color: #fff;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  display: inline-block;
  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  -o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset,0 1px 0 rgba(255, 255, 255, 0.9);
  border: medium none;
  position: absolute;
  right: 5px;
  top: 4px;
  padding: 0 3px;
  width: 26px;
  text-align: center;
  margin: 0px;
}
#sidebar li small hr {
  border: 1px solid #000;
  background-color: #111;
  opacity: .4;
}
#sidebar li small.icon24 {
  text-decoration: none !important;
}
#sidebar li > a {
  color: #555555;
  display: block;
  padding: 5px 10px;
}
#sidebar li > a:hover {
  background: rgba(229, 229, 229, 0.9);
  text-decoration: none;
}
#sidebar li > a.active {
  border-top: 1px solid #aaaaaa;
  border-bottom: none;
}
#sidebar li > a:first-child {
  border-top: none !important;
}
#sidebar li > a:last-child {
  border-bottom: none !important;
}
a.sidebar-disabled {
    opacity: 0.4;
}
a.sidebar-disabled:focus:hover{
        pointer-events: none;
}
a.sidebar-disabled:hover,
a.sidebar-disabled:focus {
    cursor: not-allowed;
}
.pad {
  margin: 14px 0 10px 0 !important;
  min-height: 600px;
  border: 1px solid #aaaaaa;
  background: #fff;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  position: relative;
  width: 785px;
}
.pad.grid-12, .pad.grid-24 {
  margin-left: 10px !important;
}
.pad.grid-24 {
  width: 935px;
}
.pad h2.dark {
  background-color: #555555;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #666666), color-stop(100%, #555555));
  background-image: -moz-linear-gradient(top, #666666 0%, #555555 100%);
  background-image: linear-gradient(top, #666666 0%, #555555 100%);
  border: 1px solid #333333;
  color: #fff;
  font-size: 14px;
  text-shadow: rgba(0,0,0,0.1) 0 -1px 0;
  padding: 5px 10px;
  z-index: 20;
  border: none;
  position: relative;
  -moz-border-radius-topleft: 3px;
  -webkit-border-top-left-radius: 3px;
  -o-border-top-left-radius: 3px;
  -ms-border-top-left-radius: 3px;
  -khtml-border-top-left-radius: 3px;
  border-top-left-radius: 3px;
  -moz-border-radius-topright: 3px;
  -webkit-border-top-right-radius: 3px;
  -o-border-top-right-radius: 3px;
  -ms-border-top-right-radius: 3px;
  -khtml-border-top-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pad h2.dark hr {
  border: 1px solid #000;
  background-color: #111;
  opacity: .4;
}
.pad h2.dark small {
  text-transform: none;
  position: absolute;
  right: 0px;
  top: 5px;
  padding-right: 5px;
  text-align: center;
  background-color: #555555;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%, #666666), color-stop(100%, #555555));
  background-image: -moz-linear-gradient(top, #666666 0%, #555555 100%);
  background-image: linear-gradient(top, #666666 0%, #555555 100%);
}
.pad h2.dark small a {
  margin: 0 10px;
  color: #fff;
  text-decoration: none;
}
.pad h2.dark small a.active {
  color: #cccccc !important;
}
.pad .fourcol {
  margin-left: 10px;
}
.pad .fourcol ul {
  margin: 0;
}
.pad .fourcol .fleft {
  width: 182px;
  margin-right: 12px;
  margin-bottom: 10px;
  display: inline-block;
}
.pad .fourcol .fleft:nth-of-type(4n) {
  margin-right: 0;
}
.pad .fleft {
  margin-right: 10px;
}
.pad .fleft h3 {
  padding: 10px 0 0;
  display: block;
}
.pad .fleft img {
  margin: 10px auto;
  display: block;
}
.pad .fleft .icon48 {
  margin: 20px auto;
  display: block;
}
.pad .fleft:last-child {
  margin-right: 0;
}
.pad .threecol .fleft, .pad .twocol .fleft {
  margin-right: 40px;
}
.pad .eightcol .fleft {
  width: 80px;
}
.pad .tencol .fleft {
  width: 75px;
}
.pad hr {
  width: 760px;
  margin-left: 10px;
}
.pad table {
  width: 765px;
  margin-left: 10px;
}
.pad p, .pad h1, .pad h2, .pad h3, .pad h4, .pad h5, .pad h6 {
  padding: 0 10px 1em;
  margin-bottom: 0;
}
.pad h1, .pad h2, .pad h3, .pad h4, .pad h5, .pad h6 {
  font-weight: bold;
}
.pad h2.title {
  font-weight: normal;
  margin-bottom: 1.5em;
  white-space: nowrap;
}
.pad .paginate {
  margin: 0 0 0 20px;
}
.pad .paginate div {
  margin: 0;
}
.pad .wide {
  width: 750px;
}

.markdown_content h1 {
  font-size: 200%;
}
.markdown_content h2 {
  font-size: 180%;
}
.markdown_content h3 {
  font-size: 160%;
}
.markdown_content h4 {
  font-size: 140%;
}
.markdown_content h5 {
  font-size: 120%;
}
.markdown_content h6 {
  font-size: 100%;
}
.markdown_content p, .markdown_content ul, .markdown_content ol {
  margin-bottom: 20px;
}
.markdown_content hr {
  width: auto;
  margin-left: 0;
  padding: 0;
  background-color: transparent;
  border: none;
  border-top: 1px solid #cccccc;
}
.markdown_content li p {
  margin-bottom: 0;
  padding: 0;
}

.markdown_content ul.md-users-list {
    list-style: none;
}
.markdown_content ul.md-users-list li.md-users-list-more {
    margin-left: -0.5em;
    margin-top: 0.5em;
}

.media a {
  float: left;
  margin-right: 20px;
}
.media a img {
  border: 1px solid #aaaaaa;
}

/* site layout */
.project_icon {
  float: left;
  width: 48px;
  height: 48px;
  margin-right: 0.5em;
  vertical-align: middle;
}

#nav_menu_holder {
    margin: 0 0 15px;
}

#nav_menu_holder #breadcrumbs {
    margin-bottom: 5px;
}

#nav_menu_holder #breadcrumbs ul {
    list-style: none;
    margin: 0;
}

#nav_menu_holder #breadcrumbs li {
    display: inline;
    font-size: 11px;
}

#nav_menu_holder #breadcrumbs li:after {
    content: ' / ';
}

#nav_menu_holder #breadcrumbs li:last-child:after {
    content: '';
}

#nav_menu_holder h1.project_title {
  line-height: 1em;
  font-size: 32px;
  margin-bottom: 0;
  display: inline;
}

#nav_menu_holder h1.project_title a,
#nav_menu_holder h1.project_title a:hover,
#nav_menu_holder h1.project_title a:visited,
#nav_menu_holder h1.project_title a:focus {
    color: #555;
    text-decoration: none;
}

#nav_menu_holder #dev-status {
    display: inline-block;
    line-height: 1em;
    vertical-align: top;
    text-transform: capitalize;
    font-size: 10px;
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    -o-border-radius: 2px;
    border-radius: 2px;
    background-color: #09c;
    color: white;
    padding: 2px;
}

#nav_menu_holder h2.project_summary {
  line-height: 1em;
  font-size: 16px;
  height: 16px;
  font-weight: normal;
  margin-bottom: 0;
}

#nav_menu_holder .brought-by.with-icon {
  margin-left: 55px;
}

.neighborhood_icon {
  float: right;
  margin-left: 0.5em;
  width: 48px;
  height: 48px;
  vertical-align: middle;
}

.neighborhood_block {
  margin-bottom: 10px;
  float: right;
  z-index: 0;
}

.neighborhood_title {
  float: right;
  text-align: right;
  padding-top: 0.4rem;
}

.neighborhood_title h3 {
  font-size: x-large;
  margin-bottom: 0.4rem;
}

.neighborhood_title_link {
  float: right;
  font-style: italic;
}

#top_nav {
  background-color: #f8f8f8;
  background-image: linear-gradient(#ffffff, #f0f0f0);
  border: 1px solid #ccc;
  border-bottom: 0;
  -ms-border-radius: 4px;
  border-radius: 4px 4px 0 0;
  overflow: visible;
  z-index: 99;
  display: block;
  margin: 0;
  padding: 0;
}
#top_nav a {
  float: left;
  margin-right: 20px;
  height: 16px;
  min-width: 35px;
  text-align: center;
  color: #333;
  background-position: center 20px;
}
#top_nav a:hover {
  opacity: 1;
  color: #666666;
}

#content_base {
  overflow: hidden;
  *zoom: 1;
}

.editbox {
  background-color: #f2f2f2;
  border: 1px solid #ccc;
  border-width: 0 0 1px 0;
  overflow: auto;
  padding: 5px 0;
  color: #555;
  margin: -20px 0 20px 0;
}
.editbox label {
  color: #555;
  font-weight: bold;
}
.editbox label.simple, .editbox label.cr {
  float: none;
  text-align: left;
}
.editbox label.cr {
  display: block;
}
.editbox .wide {
  width: 90%;
}
.editbox input[type=text] {
  width: 160px;
}
.editbox select {
  width: 170px;
}

/* Attachments */

.attachment_images {
  overflow: auto;
}

div.attachment_thumb {
  float: left;
  margin: .5em;
  margin-right: 1.5em;
  position: relative;
  padding: 10px;
}
div.attachment_thumb .delete_attachment .pic {
  position: absolute;
  top: 0;
  left: 100px;
}
div.attachment_thumb .file {
    position: absolute;
    top: 0;
    right: -40px;
}
div.attachment_thumb .file_type {
  border: 1px solid #ccc;
  display: block;
  height: 100px;
  width: 100px;
  position: relative;
  text-transform: uppercase;
  text-align: center;
  font-weight: bold;
  font-size: 1.2em;
  margin-bottom: .5em;
  background: #ccc;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, to(#cccccc), from(white));
  background-image: -moz-linear-gradient(100% 100% 90deg, #cccccc, white 100%);
}
div.attachment_thumb .file_type span {
  display: block;
  margin-top: 45px;
  color: #666;
}

div.attachment_holder {
    padding-left: 5px;
}

div.attachment_item{
    border-radius: 6px;
    display: inline-block;
    vertical-align: bottom;
    box-sizing: border-box;
    border: 1px solid #e5e5e5;
    width: 120px;
    height: 100%;
    margin-bottom: 2px;
}

.attachment_item .attachment_toolbar{
    border-radius-top: 5px;
    background-color: #f5f5f5;
    padding: 5px;
}

.attachment_item .attachment_toolbar .btn{
    float: none;
    margin-right: 2px;
    background: rgb(235,235,235);
    font-weight: bold;
    color: rgb(69,69,69);
    font-size: 0.8em;
}

.attachment_item .attachment-name {
    background-color: #fafafa;
    padding: 5px;
}

.attachment_item img {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

.attachment_item .attachment_thumbnail {
    padding: 5px;
}

/* Cards */
.installable_tool {
  margin-top: 10px;
}

.card {
  position: relative;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  display: inline-block;
  -moz-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  -o-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  box-shadow: rgba(0, 0, 0, 0.4) 0 1px 5px 0;
  background-color: #f5f5f5;
  border: 1px solid #cccccc;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  height: 250px;
  width: 220px;
  overflow: hidden;
  -moz-box-shadow: #666666 0 2px 4px 0;
  -webkit-box-shadow: #666666 0 2px 4px 0;
  -o-box-shadow: #666666 0 2px 4px 0;
  box-shadow: #666666 0 2px 4px 0;
  background: #fff;
  background-image: -webkit-gradient(linear, 0% 85%, 0% 100%, from(white), to(#e5e5e5));
  background-image: -moz-linear-gradient(100% 100% 90deg, #e5e5e5, white, white 25%);
  margin: 0 0 10px 10px;
}

.card .box {
  border: none;
  -moz-border-radius: 8px;
  -webkit-border-radius: 8px;
  -o-border-radius: 8px;
  -ms-border-radius: 8px;
  -khtml-border-radius: 8px;
  border-radius: 8px;
  margin: -6px 0 5px;
  padding: 10px 0 0;
  height: 48px;
  position: relative;
  line-height: 60px;
}
.card h2 {
  margin-top: 15px !important;
  line-height: 1.2em;
}
.card .desc {
  margin: 5px 0 0;
}
.card .feature {
  position: absolute;
  top: -1px;
  right: -3.3em;
  padding: 2em 3em .4em;
  color: #fff;
  font: 0.7em/1em helvetica;
  text-transform: uppercase;
  font-weight: bold;
  transform: rotate(45deg) translate(0px, 0px) skew(0deg, 0deg);
  -moz-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  -moz-box-shadow: #cccccc 0 1px 2px 0;
  -webkit-box-shadow: #cccccc 0 1px 2px 0;
  -o-box-shadow: #cccccc 0 1px 2px 0;
  box-shadow: #cccccc 0 1px 2px 0;
  background: #555555;
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#555555), to(black));
  background-image: -moz-linear-gradient(100% 100% 90deg, black, #555555 100%);
}
.card .box.notch {
  margin: -6px -11px 5px 0;
  background-image: -webkit-gradient(linear, 50% 100%, 100% 0%, color-stop(0.9, white), color-stop(0.9, #555555));
  background-image: -moz-linear-gradient(100% 25% 230deg, #555555, white, white 1%);
}
.list.card {
  width: 740px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  border-radius: 0 0 0 0;
  border-width: 0px;
  background: none 0 0 #fff;
  border-bottom: 1px solid #ccc;
  box-shadow: none;
  height: 60px;
  padding: 5px;
}
.list.card h2 {
  font-size: 1em;
  position: absolute;
  top: 5px;
  line-height: 0;
  width: 460px;
}
.list.card.proj_icon h2 { left: 55px; }
.list.card.proj_icon p.desc { left: 56px; }
.list.card p.desc {
  font-size: 0.85em;
  height: 1.15em !important;
  position: absolute;
  top: 30px;
  width: 460px;
}
.list.card .sfdl {
  position: absolute;
  right: 20px;
  top: 14px;
}
.list.card .feature {
  padding: 2em 3.6em .4em 2.7em;
}
.list.card .box.notch {
  background-image: -webkit-gradient(linear, 67% 435%, 100% 0%, color-stop(0.9, rgb(255,255,255)), color-stop(0.9, #555));
  background-image: -moz-linear-gradient(100% 25% 230deg,#555, rgb(255,255,255), rgb(255,255,255) 1%);
}

/* Discussion */
#comment .row {
  position: relative;
  float: right;
  clear: right;
  min-width: inherit;
}

.discussion-post, #new_post_holder {
  position: relative;
  margin-left: 20px;
}
.discussion-post p, #new_post_holder p {
  padding: 0;
  word-wrap: break-word;
}

.grid-2.gravatar {
  width: 70px;
  margin: 0 5px;
}

.discussion-post h4, #new_post_holder h4 {
  padding-left: 0;
}

.discussion-post img {
    max-width: 100%;
}

#comment .row .options {
  position: relative;
  padding-top: 5px;
}

#comment ul ul .row .options {
  right: 0;
}

#comment .row .options a.little_link {
  width: 50px;
  height: 20px;
}

#comment .row .options a.little_link span {
  position: absolute;
  left: 27px;
}

#comment .grid-14 { overflow: visible; }
#comment .display_post {
    margin-right: 5px;
    padding: 5px;
}

#comment ul {
  list-style: none;
  margin: 0 0 0 0;
  padding: 0;
  float: right;
  clear: right;
  width: 99%; /* to make thread-level <ul> full width */
}

#comment ul ul li {
  margin-right: 10px;
}

#comment ul ul {
  margin: 0 !important;
}

#comment ul ul ul li {
  margin-right: 0 !important;
}

#comment ul .reply {
  border-top-width: 0;
  margin-top: 0 !important;
  background-color: #fff;
  overflow: auto;
}

#comment ul .row {
  margin: 0;
  padding-top: 1em;
}

#comment ul ul .row {
  position: relative;
}

#comment ul .column.grid_8 {
  width: 74%;
}

#comment .edit_post_form ul,
#comment .reply_post_form ul,
#comment .display_post ul {
  float: none;
  padding-left: 1em;
  list-style-type: disc;
  width: inherit; /* regular, not 99% from thread-level <ul> */
}
#comment .edit_post_form ul,
#comment .reply_post_form ul {
  padding-left: 1.5em;
  width: 95%
}

.reply {
  position: relative;
}

.reply .arw {
  background: white;
  transform: rotate(45deg) translate(0px, 0px) skew(0deg, 0deg);
  -moz-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  height: 10px;
  width: 10px;
  border-bottom: 1px solid #d7d7d7;
  border-left: 1px solid #d7d7d7;
  position: absolute;
  top: 50px;
  left: 85px;
}

.edit_post_form.reply .arw {
  display: none;
}

.forum-list th .ico {
  margin-left: 4px;
}

.gravatar b {
  overflow: visible;
  margin-bottom: 5px;
  vertical-align: middle;
}

#ticket_search_results_holder {
  overflow: auto;
  clear: both;
}
/* headers should never force a column to be too wide */
#ticket_search_results_holder th {
    overflow: hidden;
    max-width: 1em;
}
/* tighten it up */
#ticket_search_results_holder td {
    padding-right: 5px;
    padding-left: 5px;
}

/* Stats Graph */

#stats_date_picker {
  width: 340px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
}
#stats_date_picker input {
  width: 14em;
}

#stats-viz-container {
  width: 700px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  overflow: hidden;
}

#stats-viz {
  height: 400px;
}
#stats-viz td {
  border-width: 0;
}

#stats-viz .xaxis {
  text-align: center;
}
#stats-viz .yaxis {
  -webkit-transform: rotate(270deg);  -moz-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  -o-transform: rotate(270deg);
  transform: rotate(270deg);
  max-width: 1em;
}

#project_stats_holder {
  width: 600px;
  height: 350px;
}
#project_stats_holder div.legend table {
  width: auto;
}
#project_stats_holder .tickLabel {
  margin-left: -4px;
}
#project_stats_holder .tooltip {
  background: #3f3f3f;
  border: 1px solid #222;
  opacity: .8;
  z-index: 1000;
  padding: 5px 10px;
  color: #fff;
}
#project_stats_holder .base, #project_stats_holder #content_base {
  margin: 0;
  background: none;
  border-width: 0;
}

.chart-tooltip {
  position: absolute;
  display: none;
  background: white;
  border: 1px solid black;
  border-radius: 0.5em;
  padding: 0 0.3em;
}

/* Messages */
.error, .notice, .success, .ok, .info {
  padding: .8em;
  margin-bottom: 1em;
  border: 2px solid #ddd;
}

.error p, .notice p, .success p, .info p {
  margin: 0;
}

.error {
  background: #f33;
  color: #fff;
  border-color: #f00;
}

.notice {
  background: #FFF6BF;
  color: #514721;
  border-color: #FFD324;
}

.success, .ok {
  background: #E6EFC2;
  color: #264409;
  border-color: #C6D880;
}

.info {
  background: #BDE5F8;
  color: #003565;
  border-color: #5C98CD;
}

.info a {
  color: #003565;
  text-decoration: underline;
}

.error a {
  color: #8a1f11;
  text-decoration: underline;
}

.notice a {
  color: #514721;
  text-decoration: underline;
}

.success a, .ok a {
  color: #264409;
  text-decoration: underline;
}

.fielderror {
  color: #b81414;
}

.forums .error {
  background: #8a1f11 !important;
  border-color: #500;
}

.forums .notice {
  background: #e5be20;
}

.forums .success, .forums .ok {
  background: #264409;
}

/* Inline editing of content */
.editor input, .editor textarea, .editor select {
  margin: 0;
}

.edit span.ui-icon {
  float: left;
  margin: auto;
  margin-right: 5px;
}

.editable.viewing .editor {
  display: none;
}

.editable.editing .viewer {
  display: none;
}

.editable .viewer {
  padding: 1px 5px;
  display: block;
  position: relative;
  min-height: 21px;
}

.editable .viewer:hover {
  padding: 0px 4px;
  border: 1px solid #ccc;
  cursor: pointer;
}

h1.title .viewer {
  padding: 1px 1px 1px 1px;
}

h1.title .viewer:hover {
  padding: 0 0 0 0;
}

.editable + .editable {
  margin-top: 1em;
}

.editable .editor {
  background-color: #ffc;
  padding: 4px 4px;
  border: 1px solid #ccc;
  display: block;
  overflow: hidden;
}

.editable .editor .holder_table {
  background-color: #ffc;
  margin: 0;
  width: auto;
}

.editable .editor .save_controls {
  width: 115px;
}

.editable .editor.multiline .save_holder {
  margin-top: 4px;
}

.editable .editor.multiline.overlap {
  position: absolute;
  z-index: 10;
}

.editable .editor .save_holder .cancel_btn {
  float: left;
  margin: 5px 1em 0;
}

.editable .editor .save_controls .save_holder .cancel_btn {
  margin: -5px 1em 0 1em;
}

.editable .editor .save_holder input {
  float: left;
}

.editable .viewer .edit_btn {
  display: none;
  position: absolute;
  top: 2px;
  right: 0;
}

.editable .viewer:hover .edit_btn {
  display: inline;
}

#forge_wiki_browse tr.deleted a {
  color: red;
}

.scm-branch-label, .scm-tag-label {
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  display: inline-block;
  -moz-box-shadow: 0 1px 3px rgba(51, 51, 51, 0.4) inset,0 1px 0 rgba(51, 51, 51, 0.9);
  -webkit-box-shadow: 0 1px 3px rgba(51, 51, 51, 0.4) inset,0 1px 0 rgba(51, 51, 51, 0.9);
  -o-box-shadow: 0 1px 3px rgba(51, 51, 51, 0.4) inset,0 1px 0 rgba(51, 51, 51, 0.9);
  box-shadow: 0 1px 3px rgba(51, 51, 51, 0.4) inset,0 1px 0 rgba(51, 51, 51, 0.9);
  border: medium none;
  display: inline;
  padding: 3px;
  background: #0099cc;
  font-size: 80%;
  text-shadow: none;
}

.scm-tag-label {
  background: #006699;
}

#access_urls span {
  width: 9.5em;
  text-align: right;
  display: inline-block;
}
#access_urls input {
  width: 32em;
}

.commit-details {
  padding: 10px;
}
.commit-details .commit-message {
  margin: 0px;
  padding: 10px 5px;
  border: 1px solid #aaa;
  -moz-border-radius-topleft: 4px;
  -webkit-border-top-left-radius: 4px;
  border-top-left-radius: 4px;
  -moz-border-radius-topright: 4px;
  -webkit-border-top-right-radius: 4px;
  border-top-right-radius: 4px;
  border-bottom: 0;
  background: #BDE5F8;
  color: #003565;
}
.commit-details .commit-message .first-line {
  font-size: 18px;
  font-weight: bold;
}
.commit-details .commit-details {
  font-size: 12px;
  margin: 0;
  padding: 5px 10px 0 10px;
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U1ZTVlNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
  background-size: 100%;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e5e5e5));
  background-image: -moz-linear-gradient(#ffffff 0%, #e5e5e5 100%);
  background-image: -webkit-linear-gradient(#ffffff 0%, #e5e5e5 100%);
  background-image: linear-gradient(#ffffff 0%, #e5e5e5 100%);
  border: 1px solid #aaa;
  -moz-border-radius-bottomleft: 4px;
  -webkit-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -webkit-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
}
.commit-details .commit-details p {
  height: 23px;
  padding: 2px 0;
}
.commit-details .commit-details .commit-authorship {
  float: left;
}
.commit-details .commit-details .commit-authorship label {
  display: inline-block;
  width: 85px;
}
.commit-details .commit-details .commit-authorship img {
  vertical-align: top;
}
.commit-details .commit-details .commit-links .commit-ancestry {
  float: right;
}
.commit-details .commit-details .commit-links a.commit-tree-link {
  float: right;
  margin-left: 20px;
  padding-top: 2px;
}
.commit-details .commit-details .clearfix {
  clear: both;
}

.inline-diff {
  margin: 10px;
  border: 0;
  -moz-box-shadow: 0 1px 0 #fff;
  -webkit-box-shadow: 0 1px 0 #fff;
  box-shadow: 0 1px 0 #fff;
}
.inline-diff h6 {
  padding: 0px 10px;
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U1ZTVlNSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
  background-size: 100%;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e5e5e5));
  background-image: -moz-linear-gradient(#ffffff 0%, #e5e5e5 100%);
  background-image: -webkit-linear-gradient(#ffffff 0%, #e5e5e5 100%);
  background-image: linear-gradient(#ffffff 0%, #e5e5e5 100%);
  border: 1px solid #aaa;
  -moz-border-radius-topleft: 4px;
  -webkit-border-top-left-radius: 4px;
  border-top-left-radius: 4px;
  -moz-border-radius-topright: 4px;
  -webkit-border-top-right-radius: 4px;
  border-top-right-radius: 4px;
}
.inline-diff h6 a {
  color: #666;
  display: inline-block;
  padding: 2px 0;
}
.inline-diff h6 .commit-diff-link {
  float: right;
  border-left: 1px solid #aaa;
  padding-left: 10px;
}
.inline-diff h6 .switch-diff-format-link {
  padding-right: 10px;
}
.inline-diff .inline-diff-body {
  border: 1px solid #aaa;
  border-top: 0;
  -moz-border-radius-bottomleft: 4px;
  -webkit-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -webkit-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
}
.inline-diff .inline-diff-body pre {
  padding: 0;
}
.inline-diff .inline-diff-body .empty-diff {
  margin: 10px;
  font-style: italic;
}

div.message.scm-learn-basics, div.message.scm-ssh-key, div.message.scm-empty-repo {
  cursor: default;
  display: block;
  width: auto;
  margin: 0 1em 1em;
  box-shadow: none;
}
div.message.scm-learn-basics h6, div.message.scm-empty-repo h6 {
  padding-left: 0;
}
div.message.scm-empty-repo {
  float: none;
  overflow: hidden;
  height: 90px;
}
div.message.scm-learn-basics {
  float: right;
  width: 270px;
  background-color: #f5f5f5;
  border-color: #aaa;
}
div.message.scm-learn-basics img {
  margin-right: 1em;
}

/* Repo status indicator, displayed on repo pages if status != 'ready' */
#repo_status {
  margin: 0 10px;
}
#repo_status h2 {
  display: inline-block;
}

.neighborhood_feed_entry h3 {
  font-size: 1.1em;
}

/*linenumbers in codeblock viewer style*/

table.codehilitetable {
    background: #F8F8F8;
    margin-left:0px;
    width:740px;
}

td.linenos {
    width:auto;
    padding: 0;
}
div.linenodiv {

}
td.linenos pre {
    font-size: 100%;
    padding: 1px;
    padding-left: 7px;
    padding-right: 5px;
    margin-left: 15px;
    background-color: #EBEBEB;
    color: #555;
    border-right: solid 1px #DDD;
}
td.code {
    padding-left: 0px;
    width:100%;
}

div.codehilite {
  margin-bottom: 5px;
}
div.codehilite pre div.code_block {
    padding-left:10px;
    width: 100%;
}
div.codebrowser{
    overflow-x: auto;
}
input.nofloat {
    float: none;
}
table thead tr th.narrow, table tr td.narrow {
  padding-left: 2px;
  padding-right: 2px;
}
#selected-projects {
  padding: 10px 10px;
}
#account-nav-menu {
  background-color: #e5e5e5;
  margin: 0;
  padding: 0;
  border: 0;
  overflow: hidden;
  *zoom: 1;
  background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #cccccc));
  background: -webkit-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background: -moz-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background: -o-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background: -ms-linear-gradient(top, #ffffff 0%, #cccccc 100%);
  background: linear-gradient(top, #ffffff 0%, #cccccc 100%);
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  -o-border-radius: 4px;
  -ms-border-radius: 4px;
  -khtml-border-radius: 4px;
  border-radius: 4px;
  -moz-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 3px inset, rgba(255, 255, 255, 0.9) 0 1px 0;
  -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 3px inset, rgba(255, 255, 255, 0.9) 0 1px 0;
  -o-box-shadow: rgba(0, 0, 0, 0.4) 0 1px 3px inset, rgba(255, 255, 255, 0.9) 0 1px 0;
  box-shadow: rgba(0, 0, 0, 0.4) 0 1px 3px inset, rgba(255, 255, 255, 0.9) 0 1px 0;
  margin: 0 10px 1em;
}
#account-nav-menu li {
  list-style-image: none;
  list-style-type: none;
  margin-left: 0;
  display: -moz-inline-box;
  -moz-box-orient: vertical;
  display: inline-block;
  vertical-align: middle;
  *vertical-align: auto;
  white-space: nowrap;
}
#account-nav-menu li {
  *display: inline;
}
#account-nav-menu a {
  display: -moz-inline-box;
  -moz-box-orient: vertical;
  display: inline-block;
  vertical-align: middle;
  *vertical-align: auto;
  color: inherit;
  text-decoration: inherit;
  cursor: inherit;
  cursor: pointer;
  padding: 10px;
  padding-bottom: 0;
  color: #555;
  font-family: Ubuntu, sans-serif;
}
#account-nav-menu a {
  *display: inline;
}
#account-nav-menu a:active, #account-nav-menu a:focus {
  outline: none;
}
#account-nav-menu .marker {
  width: 10px;
  height: 10px;
}
#account-nav-menu .marker.current {
  -moz-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
  background: white;
  border-left: 1px solid #AAA;
  border-top: 1px solid #AAA;
  position: relative;
  bottom: -5px;
  left: 45%;
}
ul.dropdown,
ul.dropdown ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

ul.dropdown {
  border-bottom: 1px solid #ccc;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
  box-shadow: 0 1px 1px #ccc;
  overflow: hidden;
  padding: 10px 10px 0;
}

#top_nav ul.dropdown > li {
    float: left;
    margin-right: 0;
    padding-bottom: 10px;
}

#top_nav ul.dropdown > li > a {
  border-right: 1px solid #ccc; /* e5e5e5 or #ccc ? */
  margin-right: 10px;
  padding-right: 10px;
}

#top_nav ul.dropdown > li:last-child > a {
  border-right: 0;
  margin-right: 0;
}

ul.dropdown ul {
    visibility: hidden;
    position: absolute;
    top:36px;
    z-index: 598;
    margin-left: -10px;
    background-color: #ffffff;
    -moz-border-bottom-left-radius: 5px;
    -webkit-border-bottom-left-radius: 5px;
    -o-border-bottom-left-radius: 5px;
    -ms-border-bottom-left-radius: 5px;
    -khtml-border-bottom-left-radius: 5px;
    border-bottom-left-radius: 5px;
    -moz-border-bottom-right-radius: 5px;
    -webkit-border-bottom-right-radius: 5px;
    -o-border-bottom-right-radius: 5px;
    -ms-border-bottom-right-radius: 5px;
    -khtml-border-bottom-right-radius: 5px;
    border-bottom-right-radius: 5px;
    border-top: 0;
    -moz-box-shadow: 2px 2px 5px rgba(0,0,0,0.4);
    -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.4);
    -o-box-shadow: 2px 2px 5px rgba(0,0,0,0.4);
    box-shadow: 2px 2px 5px rgba(0,0,0,0.4)
}

ul.dropdown ul li {
    float: left;
    min-width: 100px;
    margin: 0;
    padding: 0;
}

ul.dropdown li:hover > ul {
    visibility: visible;
}
ul.dropdown ul li a {
    white-space: nowrap;
    height: auto !important;
    font-weight:normal;
    padding: 5px;
}
ul.dropdown ul li:first-child a {
    border-top: 0;
}
#top_nav ul.dropdown > li ul li {
    border: 1px solid #e5e5e5;
    border-bottom: none;
}
#top_nav ul.dropdown > li ul li:first-child {
    border-top: 0;
}
#top_nav ul.dropdown li.selected > a {
    color: #0077AA;
}
#top_nav ul.dropdown li ul li:hover {
  background-color: #09c;
  background-image: linear-gradient(#09c, #07a);
  border-color: #07a;
}
#top_nav ul.dropdown ul li a:hover {
    color: white !important;
}
#top_nav ul.dropdown ul li,
#top_nav ul.dropdown ul li a {
    float: none;
    display: block;
    text-align: left;
}
#project-import-form {
    margin-left: 5px;
}
#project-import-form fieldset {
    margin-top: 10px;
}
#project-import-form label {
    display: block;
}
#project-import-form #project-fields label {
    text-align: right;
    font-size: 18px;
    font-weight: 300;
    line-height: 28px;
}
#project-import-form .error {
    background: transparent;
    color: red;
    border: 0;
    padding: 0;
    font-weight: 300;
}
#project-import-form #project-url {
    font-size: 12px;
    font-weight: 300;
}
#project-import-form #url-fragment {
    font-weight: 600;
}
#project-import-form .tool {
    float: left;
    position: relative;
    padding: 10px 20px 10px 70px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    -o-border-radius: 4px;
    -ms-border-radius: 4px;
    -khtml-border-radius: 4px;
    border-radius: 4px;
    border: 1px solid #aaa;
    width: 360px;
    margin: 5px;
    background-color: whiteSmoke;
    height: 74px;
}
#project-import-form .tool img {
    left: 10px;
    position: absolute;
    top: 26px;
}
#project-import-form .tool label {
    line-height: 24px;
    font-size: 18px;
    font-weight: 600;
}
#project-import-form input[type="submit"] {
    margin-top: 30px;
    margin-left: 5px;
    float: none;
    display: inline-block;
    position: relative;
    top: -1em;
    font-size: 18px;
    font-weight: 600;
    text-shadow: none;
    color: white;
    padding: 1em 2em 1em 2em;
    text-decoration: none;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    background: rgb(0,0,0);
    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, to(rgb(0,0,0)), from(rgb(90,90,90)));
    background-image: -moz-linear-gradient(100% 100% 90deg, rgb(0,0,0), rgb(90,90,90) 100%);
    border: 1px solid black;
}

.content-maximized #top_nav,
.content-maximized #page-body,
.content-maximized #content_base > div:last-child,
.content-maximized #content_base .codebrowser
{
    width: 100%;
}

.content-maximized #content_base .ticket-list
{
    width: 99%;
}

.content-maximized #content_base .diffbrowser {
    width: auto;
}

.content-maximized #sidebar,
.content-maximized #maximize-content,
#restore-content {
    display: none;
}

.content-maximized #restore-content {
    display: inline;
}

/* User Profile styles generated from _user_profile.scss */
.profile-section {
  width: 660px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  margin: 0 0 10px 10px;
  border: 1px solid #aaaaaa;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
}
.profile-section > h3 {
  background-color: #555555;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #666666), color-stop(100%, #555555));
  background-image: -webkit-linear-gradient(#666666, #555555);
  background-image: -moz-linear-gradient(#666666, #555555);
  background-image: -o-linear-gradient(#666666, #555555);
  background-image: linear-gradient(#666666, #555555);
  border: 1px solid #333333;
  color: #fff;
  font-weight: normal;
  font-size: 16px;
  padding: 10px;
}
.profile-section > h3 hr {
  border: 1px solid #000;
  background-color: #111;
  opacity: .4;
}
.profile-section > h3 .actions {
  float: right;
  color: #fff;
  font-size: 14px;
}
.profile-section > h3 .actions a {
  color: #fff;
  text-decoration: underline;
}
.profile-section > h3 .actions a.icon {
  text-decoration: none;
}
.profile-section > h3 .actions.active {
  color: #cccccc !important;
}
.profile-section .section-body {
  background-color: #fff;
}
.profile-section .section-body .empty {
    font-style: italic;
    list-style: none;
}

.profile-section.activity {
  width: 260px;
  display: inline;
  float: left;
  overflow: hidden;
  *zoom: 1;
  margin: 0 10px;
  float: right;
  margin: 10px 10px 0 0;
}
.profile-section.activity .empty {
  padding: 10px;
  margin-bottom: 0;
}
.profile-section.activity ul {
  margin: 0;
  list-style: none;
}
.profile-section.activity ul li {
  padding: 10px;
  padding-bottom: 0;
  border-bottom: 1px solid #cccccc;
}
.profile-section.activity ul li img {
  vertical-align: text-bottom;
}
.profile-section.activity ul li p {
  padding: 5px 0 0 0;
}
.profile-section.activity ul li time {
  display: block;
  text-align: right;
  font-size: 10px;
}
.profile-section.activity a.view-all {
  display: block;
  text-align: right;
  padding: 5px 10px;
}
.profile-section.personal-data {
  margin-top: 10px;
}
.profile-section.personal-data .section-body {
  padding: 10px;
}
.profile-section.personal-data dl dt {
  display: inline-block;
  font-weight: bold;
  margin-right: 4px;
  width: 130px;
  vertical-align: top;
}
.profile-section.personal-data dl dd {
  display: inline;
}
.profile-section.personal-data dl dd:after {
  content: '\A';
  white-space: pre;
}
.profile-section.personal-data dl dd ol {
  list-style: none;
  display: inline-block;
  margin-left: 0;
}
.profile-section.projects ul, .profile-section.projects ol {
  list-style: none;
  margin: 0;
}
.profile-section.projects ul li, .profile-section.projects ol li {
  clear: both;
  border-top: 1px solid #e5e5e5;
  padding: 10px;
}
.profile-section.projects ul img, .profile-section.projects ol img {
  vertical-align: top;
  margin-right: 10px;
  margin-bottom: 10px;
  float: left;
}
.profile-section.projects ul .project-info a, .profile-section.projects ol .project-info a {
  font-weight: bold;
}
.profile-section.projects ul .project-info a:after, .profile-section.projects ol .project-info a:after {
  content: '\A';
  white-space: pre;
}
.profile-section.projects ul .project-last-updated {
  display: block;
  text-align: right;
  font-style: italic;
  font-size: 10px;
}
.profile-section.projects ul .project-last-updated:after {
  display: table;
  content: "";
  clear: both;
}
.profile-section.projects .show-more-projects {
      text-align: center;
}
.profile-section.projects .show-more-projects button {
    float: none;
}
.profile-section.skills .section-body {
  padding: 10px 0;
}
.profile-section.skills .section-body ul {
  margin-bottom: 0;
  margin-left: 0;
}
.profile-section.skills .section-body li {
  margin-left: 25px;
}
.profile-section.skills .section-body li.empty {
  margin-left: 10px;
}
.profile-section.tools .section-body {
  padding: 10px 0;
}
.profile-section.tools .section-body ul {
  margin-bottom: 0;
  margin-left: 0;
}
.profile-section.tools .section-body li {
  margin-left: 25px;
}
.profile-section.tools .section-body li.empty {
  margin-left: 10px;
}
.profile-section.social {
  margin-top: 10px;
}
.profile-section.social .section-body {
  padding: 10px;
}
.profile-section.social dl dt {
  display: inline-block;
  font-weight: bold;
  margin-right: 4px;
  width: 100px;
  vertical-align: top;
}
.profile-section.social dl dd {
  display: inline;
}
.profile-section.social dl dd:after {
  content: '\A';
  white-space: pre;
}
.profile-section.social dl dd.empty {
  margin-left: 10px;
}
.profile-section.social dl dd a {
  margin: 0;
}
#user-message {
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
  color: #fff;
  text-shadow: #333333 0 1px 0 !important;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0099cc), color-stop(100%, #0077aa));
  background-image: -webkit-linear-gradient(#0099cc 0%, #0077aa 100%);
  background-image: -moz-linear-gradient(#0099cc 0%, #0077aa 100%);
  background-image: -o-linear-gradient(#0099cc 0%, #0077aa 100%);
  background-image: linear-gradient(#0099cc 0%, #0077aa 100%);
  float: right;
  display: block;
  font-size: 15px;
}
#user-message b.ico {
  font-size: 26px;
  width: 26px;
  height: 26px;
}
#user-message i {
  display: block;
}
/* end of User Profile styles from _user_profile.scss */
/* Use the right icon set for the User Activity and Send Message action buttons on User Profile */
.profile-section.activity h3 b.ico,
#user-message {
    top: 10px;
}
.strikethrough { text-decoration: line-through; }

fieldset.preferences {
  margin-bottom: 2em;
  border: 1px solid silver;
  padding: 8px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}
fieldset.preferences legend {
  margin: .2em;
  padding: .2em;
  font-size: 1.5em;
}
.ui-autocomplete {
  z-index: 10; /* so autocomplete of tags or username is always over markdown editor components */
}
.spam-present {
  display: none;
  margin-left: 75px;
}
.spam-text {
  float: left;
}

.bubble{
    border-radius: 3px;
    display: inline-block;
    vertical-align: top;
    box-sizing: border-box;
    border: 1px solid #e5e5e5;
}

.bubble .header{
    border-radius-top: 5px;
    background-color: #e5e5e5;
    padding: 10px;
}

.bubble .header .btn{
    float: none;
    margin: 0px;
    border: 1px solid rgb(215,215,215);
    background: rgb(235,235,235);
    font-weight: bold;
    color: rgb(69,69,69);
    font-size: 0.8em;
}

.header .fa{
    display: inherit;
}

.header form{
    display:inline;
}

.header .tools{
    display: inline;
    float: right;
}

.header a .little_link {

}

.bubble::before {
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 8px 8px 0;
    border-color: transparent #F7F7F7 transparent transparent;
    content:'\A';
    position:absolute;
    left: 83px;
    top: 25px;
    border-right-color: #e5e5e5;
}

.discussion-post .row .emboss{
    box-shadow: rgba(0, 0, 0, 0.0) 0 1px 5px 0;
    -webkit-box-shadow: rgba(0, 0, 0, 0.0) 0 1px 5px 0;

    border-radius: 10%;
}

.discussion-post .editor-toolbar {
    border: 0px;
    width: 100%;
}

.discussion-post .CodeMirror {
    border: 0px;
    width: 100%;
}

.discussion-post .editor-statusbar {
    border: 0px !important;
    width: 100%;
}

.discussion-post .editor-preview {
    width: 100%;
}

.meta_post .bubble .header{
    background-color: #ffffff;
    font-size: 0.7em;
}

.meta_post .bubble::before{
    border-right-color: #efefef;
}

.meta_post .bubble .markdown_content{
    padding-left: 5px;
    font-size: 0.7em;
}

.reply .bubble::before{
    display:none;
}

.reply .gravatar{
    padding-top: 33px;
}

.reply .markdown_edit .bubble{
    padding-left: 5px;
}

div .bubble .CodeMirror {
    border-top: 1px #bbb solid !important;
    border-bottom: 1px #bbb solid !important;
    width: 100%;
}

.bubble .edit_markdown_form{
    padding-left: 5px;
}

@media print{
  body{ 
  	background-color: #FFFFFF; 
  	background-image: none; 
  	color: #000000; 
  }
  div{
    background-image: none;
    box-shadow: none;
    width: 100%;
  }
  #site-header, #site-sec-header, #sidebar, #top_nav{ 
  	display: none; 
  }
  #page-body, #content_base{ 
  	width: 100%; 
  }
  .btn, button, input[type=submit], input[type=reset], input[type=button]{
    background-image: none;
    box-shadow: none;
  }
}

#content_base img.emoji {
    display: inline !important;
    height: 1em;
    width: 1em;
    margin: 0 .05em 0 .1em;
    vertical-align: -0.1em;
}


#mainmenu .logo{
    display: block;
    width: 110px;
    height: 24px;
}

#ticket_search_results_holder{
    overflow: auto;
}
.pagination_size {
    height: 40px;
}

tr.rev div.markdown_content p {
    padding: 0;
    margin-bottom: 0;
}

#login_overlay .title,
#phone_verification_overlay .title {
    margin-bottom: 0;
    padding-left: 10px;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
}

#login_overlay iframe,
#phone_verification_overlay iframe {
    width: 400px;
}

#phone_verification_overlay iframe {
    height: 320px;
}

/* give some space after sidebar admin link (except for its own section which starts with <div> instead of <ul>) */
#sidebar-admin-header ~ ul:first-of-type {
    margin-top: 20px;
}
/* expand/collapse indicator */
#sidebar-admin-header h3::before {
    content: '▸ ';
}
#sidebar-admin-header.expanded h3::before {
    content: '▾ ';
}
#sidebar-admin-header h3 {
    padding-left: 2px;
}

#usergroup_admin td.group {
  text-align: center;
  line-height: 2em;
}
#usergroup_admin ul {
  list-style-type: none;
}
#usergroup_admin .fa-plus-circle,
#usergroup_admin .fa-check-circle,
#usergroup_admin .fa-check {
  color: green;
}
#usergroup_admin .fa-ban {
  color: red;
}
