/*
       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: fixed;
  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: auto;
  margin-bottom: 1em;
  padding: 0;
}
.no-js .message header {
  padding: 20px 20px 0;
}
.no-js .message .content {
  padding: 0 20px 20px;
}
/* modal */
.modal:not(.lightmodal) {
  background: rgb(60, 60, 60) none;
  color: #fff;
}
.modal:not(.lightmodal) hr {
  background-color: #595454;
}
.modal:not(.lightmodal) a {
  color: #fff;
}
.modal.lightmodal {
  background-color: #fff;
}
.modal {
  border-radius: 10px;
  display: inline-block;
  margin: 0 auto;
  border: 2px 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;
}
input.validate_input:valid[type='text'] {
    border: 1px solid #d8ffd5;
    background: #deffdc;
}
input.validate_input:invalid[type='text'] {
    background: #fadad5;
}
.modal-form-error {
    color: red;
    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 form {
  padding-top: 20px;
}
.modal a {
  text-decoration: underline;
}
.modal .hidden_in_modal {
    display: none;
}

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

.modal.markdown_help .codehilitetable {
  width: inherit;
}

.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-set .joined{
    margin: 0 0 10px 0 !important;
}

.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;
}

.filter-container {
  display: inline-block;
  overflow: hidden;
  padding-left: 10px;
  *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 #search {
  position: relative;
}
#sidebar #search .fa-search {
  position: absolute;
  z-index: 2;
  top: 15px;
  right: 0;
  font-size: 14px;
  text-align: center;
  height: 23px;
  width: 23px;
  line-height: 23px;
}
#sidebar #search .fa-search:hover {
  cursor: pointer;
}
#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;
}
/* cancel out ".pad table" styles in smaller contexts, it really only works when its not nested inside anything */
.pad #comment table, .pad .markdown_edit table {
  width: 100%;
  margin-left: inherit;
}
.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;
}

.nbhd_holder {
    height: px;
    float: left;
    margin-left: 10px;
    margin-top: 10px;
}

.nbhd_icon {
    width: 50px;
    float:left;
    background-color: #f9f9f9;
    margin-right: 5px;
}

.nbhd_details{
    float: left;
    padding-left: 2px;
    padding-right: 2px;
    padding-top: 5px;
    min-width: 120px;
}

.neighborhoods .nbhd_icon .placeholder{
    width: 50px;
    height: 50px;
}

#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 img {
  border: 1px solid #ccc;
}
div.attachment_thumb .file_type {
  display: block;
  height: 100px;
  width: 100px;
  position: relative;
  text-transform: uppercase;
  text-align: center;
  font-weight: bold;
  font-size: 1.2em;
  margin-bottom: .5em;
}
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;
    word-wrap: break-word;
}

.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;
}
.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;
  width: initial;
}
.list.card p.desc {
  font-size: 0.85em;
  height: 1.15em !important;
  position: absolute;
  top: 30px;
  width: 460px;
  line-height: 1.35em;
}
.list.card .sfdl {
  position: absolute;
  right: 20px;
  top: 14px;
}
.list.card .feature {
  padding: 2em 3.6em .4em 2.7em;
}

/* Discussion */
#comment .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 .comment-row .options {
  position: relative;
  padding-top: 5px;
}

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

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

#comment .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 .display_post .reactions .reaction {
    display: inline-block;
    padding: 2px;
}

#comment .display_post .reactions-active .reaction {
  cursor: pointer;
}

#comment .display_post .reactions .reaction-current {
    background-color: rgb(240,240,240);
    border-radius: 2px;
}
#comment .display_post .reactions .reaction .emoj {
    display: inline-block;
}

#comment .display_post .reactions .reaction .emoj-count {
    display: inline-block;
    font-size: 11px;
    margin-left: 3px;
}

#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 .comment-row {
  margin: 0;
  padding-top: 1em;
}

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

#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;
}
.edit_markdown_form .btn.link.attachment_form_add_button {
    margin: 0 0 5px 5px;
}
.subscribe-checkbox {
    margin-top: 7px;
}
.pad .editbox label.subscribe {
    font-weight: normal;  /* override .pad .editbox label */
}
.btn.link.cancel_edit_post,
.btn.link.cancel_form
{
    float:right;
    margin-right: 35px;
}

#create_new_topic select {
  width: auto;
}
#create_new_topic input[type=file] {
  margin-left: 1em;
}

.forum-list th .ico {
  margin-left: 4px;
}
.forum-list .topic h3 {
    padding-left: 0;
}
.forum-list th .icon {
    margin-left: 3px;
}

.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: 150px;
}

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

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

.editable .editor.multiline textarea{
    width: 95%;
    min-width: 300px;
}

.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;
}
#page_edit_form input[value=Cancel] {
    float: right;
    margin-right: 40px;
}

.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 > * {
  /* keep all parts of this the same row, input box will get cut off at end */
  display: table-cell !important;
  white-space: nowrap;
  vertical-align: middle;
}
#access_urls .btn-set {
  margin-right: 2em;
  float: none;
}
#access_urls span {
  text-align: right;
  padding-right: 0.5em;
}
#access_urls input {
  width: 1024px; /* really big, it won't all show */
  /* eliminate border features, so when it gets truncated, its not obvious */
  border: 0;
  box-shadow: none;
  border-radius: 0;
  background-color: lightgray;
  vertical-align: text-top;
}

.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;
}

/* .message default styles are hidden and controlled by jquery.notify.js.  These are to be displayed as regular blocks */
div.message.show-message, div.message.scm-learn-basics, div.message.scm-ssh-key, div.message.scm-empty-repo {
  cursor: auto;
  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 {
  list-style: none;
  margin: 0;
}
.profile-section.projects ul li {
  clear: both;
  border-top: 1px solid #e5e5e5;
  padding: 10px;
}
.profile-section.projects ul li > img, .profile-section.projects ul .placeholder-icon {
  vertical-align: top;
  margin-right: 10px;
  float: left;
}
.profile-section.projects ul .placeholder-icon {
  width: 48px;
  height: 48px;
  /* inspired by https://lea.verou.me/css3patterns/#blueprint-grid */
  background-color: lightgray;
  background-image: linear-gradient(rgba(255,255,255,.5) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.5) 1px, transparent 1px);
  background-size: 10px 10px;
  background-position: 4px 4px;
}
.profile-section.projects ul .project-info a {
  font-weight: bold;
}
.profile-section.projects ul .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;
}
.profile-section.tickets {
  margin-top: 10px;
}
.profile-section.tickets .section-body {
  padding: 10px;
}
.profile-section.merge_requests .section-body {
  padding: 10px;
}
#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: 95px; /* account for gravatar */
  margin-top: 1em; /* match .comment-row */
}
.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;
}

:target > .comment-row > .post-content {
    border-color: black;
}
:target > .comment-row > .bubble::before {
    border-right-color: black;
}

.discussion-post .comment-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%;
}

.post-reactions-list .emoji_button {
    padding: 1px 2px 1px 2px;
    margin-left: 1px;
    display: inline-block;
    border: transparent solid 1px;
}

.post-reactions-list .current {
    border: #999 solid 1px;
    border-radius: 2px 2px;
}

.post-reactions-list img.emoji { 
    width: 16px;
    margin: 2px 0px -2px 1px;
    cursor: pointer;
}

.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;
}



/*
Nav bar styles moved out of navbar.css since they are more stylistic than layout, and a different theme probably won't want them.
 */
#threshold-config > span > input {
    background-color: #F2F2F2;
    color: #333;
    font-weight: bold;
}
#top_nav_admin {
    overflow: hidden;
    width: 918px;  /* 940px - 32px for toggle-admin-btn */
}
#top_nav {
    border-bottom: 1px solid #ccc;
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    box-shadow: 0 1px 1px #ccc;
}
.tb-item-grouper {
    top: 32px;
}
#top_nav .add-tool-toggle {
    margin-top: -4px;
}
#top_nav .add-tool-toggle:hover {
    color: #0099cc;
    background: #F4F4F4;
    text-decoration: underline;
}
.contextMenu {
    background: #f0f0f0;
    border: 1px solid #999;
    box-shadow: -2px 2px 6px #555;
}
#add-tool-container li {
    border: 1px solid #e5e5e5;
}
#add-tool-container li:hover {
    color: white;
    background-color: #09c;
    background-image: linear-gradient(#09c, #07a);
    border-color: #07a;
}
#add-tool-container li:hover a {
    color: white !important;
}
.unlocked-container{
    margin-top: 10px;
}
