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

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

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;
}
#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 {
  float: right !important;
  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;
}

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

.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 .ico-close {
  float: right;
  margin-top: -10px;
  margin-right: -10px;
  display: none;
  font-size: 18px;
  width: 18px;
  height: 18px;
  color: #1a1a1a;
}
.message.error {
  background-color: #8a0f0f;
  border-color: #5c0a0a;
}
.message.error .ico-close {
  color: #5c0a0a;
}
.message.confirm {
  background-color: #0f8a0f;
  border-color: #0a5c0a;
}
.message.confirm .ico-close {
  color: #0a5c0a;
}
.message.warning {
  background-color: #d9d926;
  border-color: #adad1f;
  color: #333333;
}
.message.warning a {
  color: #333333;
}
.message.warning header {
  text-shadow: none;
}
.message.warning .ico-close {
  color: #adad1f;
}
.message:hover .ico-close {
  display: block;
}

.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-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: 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: #555555;
  border: 1px solid #555555;
  margin: 0 auto;
  border: 0;
  top: 20px;
  left: 50%;
  margin-left: -312px;
  position: fixed;
  width: 542px;
  z-index: 10001;
  min-height: 300px;
  overflow: auto;
  padding: 40px;
  -moz-box-shadow: inset 0 1px 1px #aaaaaa,inset 0 -2px 20px rgba(0, 0, 0, 0.5),0 1px 5px rgba(0, 0, 0, 0.4);
  -webkit-box-shadow: inset 0 1px 1px #aaaaaa,inset 0 -2px 20px rgba(0, 0, 0, 0.5),0 1px 5px rgba(0, 0, 0, 0.4);
  -o-box-shadow: inset 0 1px 1px #aaaaaa,inset 0 -2px 20px rgba(0, 0, 0, 0.5),0 1px 5px rgba(0, 0, 0, 0.4);
  box-shadow: inset 0 1px 1px #aaaaaa,inset 0 -2px 20px rgba(0, 0, 0, 0.5),0 1px 5px rgba(0, 0, 0, 0.4);
}
.modal hr {
  border: 1px solid #000;
  background-color: #111;
  opacity: .4;
}
.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;
}

/* help */
#help {
  width: 100%;
  padding: 20px 0 0;
  -moz-box-shadow: rgba(0, 0, 0, 0.5) 0 0 20px 0 inset;
  -webkit-box-shadow: rgba(0, 0, 0, 0.5) 0 0 20px 0 inset;
  -o-box-shadow: rgba(0, 0, 0, 0.5) 0 0 20px 0 inset;
  box-shadow: rgba(0, 0, 0, 0.5) 0 0 20px 0 inset;
}
#help h1 {
  padding-left: 20px;
}

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

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

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%);
}

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

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 */
.ico, .ico-l:before, .ico-r:after {
  font: normal 16px/4px "Pictos";
  text-decoration: none;
  width: 16px;
  height: 16px;
  display: inline-block;
}

.ico:before, .ico-l:before, .ico-r:after {
  content: attr(data-icon);
}

.ico {
  line-height: 4px;
}

.btn em, .ico + em {
  text-indent: -9999px;
  position: absolute;
}

.ico-l:before {
  margin-right: 10px;
}

.ico-r:after {
  margin-left: 10px;
}

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

.ico.reverse {
  color: #fff !important;
  text-shadow: #333333 0 1px 0, #0099cc 0 1px 10px !important;
}

a .ico:active {
  opacity: 1;
}

a .ico:hover {
  opacity: .7;
}

nav .ico {
  text-transform: none;
}

.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 b.close {
  position: absolute;
  top: 10px;
  right: 10px;
  cursor: pointer;
}

#directory .ico, #search .ico {
  color: #cccccc;
}

.icon_social_NN, .icon_facebook_16, .icon_facebook_24, .icon_facebook_32 {
  display: block;
}

.icon_facebook_16 {
  background-position: 0 0;
  width: 16px;
  height: 16px;
}

.icon_facebook_24 {
  background-position: 0 -26px;
  width: 24px;
  height: 24px;
}

.icon_facebook_32 {
  background-position: 0 -60px;
  width: 32px;
  height: 32px;
}

/* 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  */
.base, #content_base {
  margin: -24px 0 0;
  background: #e5e5e5;
  border: 1px solid #aaaaaa;
  -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;
}

.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;
  z-index: 1;
  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: 5px;
  top: 5px;
  text-align: center;
}
.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;
}
.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;
  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;
}

#top_nav {
  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;
  -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;
  margin: 0 0 20px 0;
  overflow: visible;
  width: 940px;
}
#top_nav a {
  float: left;
  margin-right: 20px;
  height: 50px;
  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;
}

/* forge tool icons */
.ui-icon-tool-home, .ui-icon-tool-profile {
  background-repeat: no-repeat;
}

.ui-icon-tool-wiki {
  background-repeat: no-repeat;
}

.ui-icon-tool-git, .ui-icon-tool-svn, .ui-icon-tool-hg {
  background-repeat: no-repeat;
}

.ui-icon-tool-stats {
  background-repeat: no-repeat;
}

.ui-icon-tool-admin, .ui-icon-admin {
  background-repeat: no-repeat;
}

.ui-icon-tool-discussion {
  background-repeat: no-repeat;
}

.ui-icon-tool-tickets {
  background-repeat: no-repeat;
}

.ui-icon-tool-link {
  background-repeat: no-repeat;
}
.ui-icon-tool-shorturl {
  background-repeat: no-repeat;
}


.ui-icon-tool-blog {
  background-repeat: no-repeat;
}

.ui-icon-tool-chat {
  background-repeat: no-repeat;
}

.ui-icon-tool-hosted_apps {
  background-repeat: no-repeat;
}

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

.border {
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radius: 5px;
  -khtml-border-radius: 5px;
  border-radius: 5px;
  padding: 5px 10px;
  border-bottom: 1px solid #fff;
}

.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 .quik {
  position: absolute;
  bottom: 10px;
  left: 10px;
}
.card .quik a {
  margin: 0;
  color: #000;
  text-shadow: #fff 0 1px;
  border: none;
  width: 24px;
  height: 24px;
  display: inline-block;
}
.card .quik a span {
  display: none;
}
.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%);
}
.card hr {
  visibility: hidden;
}
.card.sm {
  height: 46px;
  width: 34px;
}
.card.sm .box {
  height: 48px;
  margin: 0 0 0 -7px;
  padding: 0;
}

/* Discussion */
#comment .row {
  border: 3px solid #d7d7d7;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radius: 5px;
  -khtml-border-radius: 5px;
  border-radius: 5px;
  position: relative;
  z-index: 1;
  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;
}

#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 ul {
  list-style: none;
  margin: 0 20px 20px 0;
  padding: 0;
  float: right;
  clear: right;
  width: 99%;
}

#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;
  padding-bottom: 30px;
}

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

#comment ul ul .row {
  border: 3px solid #ebebeb;
  border-radius: 0;
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  border-bottom-left-radius: 0;
  -webkit-border-bottom-left-radius: 5px;
  -moz-border-radius-bottomleft: 5px;
  margin: -3px 0 0 0;
  position: relative;
  z-index: 0;
}

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

#comment .display_post ul {
  float: none;
  padding-left: 1em;
  list-style-type: disc;
}

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

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

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

/* Repo status indicator, displayed on repo pages if status != 'ready' */
#repo_status h2 {
  padding-left: 33px;
}

.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 pre {
    padding-left: 0px;
    padding-top:10px;
    padding-bottom:10px;
}
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 li,
ul.dropdown ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

ul.dropdown {
    position: relative;
    z-index: 597;
    float: left;
}

ul.dropdown li {
    float: left;
    vertical-align: middle;
    zoom: 1;
    padding-top: 10px;
    padding-bottom: 10px;
}

ul.dropdown li.hover,
ul.dropdown li:hover {
    position: relative;
    z-index: 599;
    cursor: default;
}

ul.dropdown ul {
    visibility: hidden;
    position: absolute;
    top:70px;
    z-index: 598;
    background-color: #ffffff;
    border-width: 1px;
    border-style: solid;
    border-color: #dddddd;
    -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;
    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;
    border-top: 1px solid #eee;
}
ul.dropdown ul li:first-child a {
    border-top: 0;
}
li.selected,
ul.dropdown ul li.selected a{
    font-weight:bold;
}
ul.dropdown ul li a:hover {
    background-color: #09c;
    color: white !important;
}
#top_nav ul.dropdown ul li,
#top_nav ul.dropdown ul li a {
    float: none;
    display: block;
    text-align: left;
    margin-right: 0;
}
