/*
       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;
}

.ads ins {
  background-color: transparent;
}

.medrec {
  width: 300px;
  display: block;
}

.ads, .ad {
  margin: 0 0 20px;
}

.leaderboard {
  width: 728px;
  overflow: hidden;
  text-align: center;
  margin: 0 auto;
  line-height: 0;
}
.leaderboard .google_afc {
  margin: 0 auto;
}

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

.hub {
  width: 200px;
  overflow: hidden;
}

/* 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;
}

html.no-boxshadow input, html.no-boxshadow textarea, html.no-boxshadow select {
  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;
}

.no-cssgradients #top_nav {
  border-top: 1px solid #aaaaaa;
  border-left: 1px solid #aaaaaa;
  border-right: 1px solid #aaaaaa;
}

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

/* 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;
}
