/*
 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.
*/
html {
  font-family: sans-serif;
}

body {
  margin: 0;
}

.datepicker {
  background-color: #480032 !important;
}

a:active, a:focus {
  color: #268bd2;
}

a:active,
a:hover {
  outline: 0;
}

h1 {
  font-size: 2em;
}

code,
kbd,
pre {
  font-family: monospace, serif;
  font-size: 1em;
}

pre {
  white-space: pre-wrap;
  word-wrap: break-word;
}

q {
  quotes: "\201C" "\201D" "\2018" "\2019";
}

small {
  font-size: 80%;
}

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

legend {
  border: 0;
  padding: 0;
}

button,
input,
select,
textarea {
  font-family: inherit;
  font-size: 100%;
  margin: 0;
}

button,
input {
  line-height: normal;
}

button,

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

textarea {
  overflow: auto;
  vertical-align: top;
}

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

html {
  font-family: sans-serif;
}

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

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: sans-serif;
  font-weight: 700;
}

html {
  background-color: #282828;
  color: #9C9C9C;
}

body {
  background-color: #2E2E2E;
  border: 1pt solid #586e75;
}

.well {
  background-color: #041E55;
  color: #EEE;
}

.well li {
  background-color: #021A4D;
}

.well li:hover {
  background-color: #071E51;
}

.btn-danger {
  background-color: #610043 !important;
  color: #EEE;
}

.btn-success {
  background-color: #597900 !important;
  color: #EEE;
}

.btn-primary {
  background-color: #804D00 !important;
  color: #EEE;
}

.btn-warning {
  background-color: #071E51 !important;
  border-color: #082E61 !important;
  color: #EEE;
}

.bubble-info, .bubble-warning, .bubble-danger, .bubble-success, .bubble-primary, .bubble-topic {
  background: #2D2C2B !important;
  color: #e5b900;
}

.reply {
  background-color: #000E2C;
  border: 1pt solid #586e75;
  box-shadow: 5pt 5pt 8pt #073642;
  color: #DDD;
  padding: 1em;
}

#stats {
  background-color: #425B00;
  margin: 10px;
  border-radius: 5px;
  border: 1pt solid #597900;
  color: #EEE;
}

code {
  background-color: #073642;
  padding: 2px;
}

a {
  color: #FFF;
}

a:visited {
  color: #FFC;
}

a:hover {
  color: #FFB;
}

h1 {
  color: #d33682;
}

h2,
h3,
h4,
h5,
h6 {
  color: #EEE;
}

pre {
  background-color: #002b36;
  color: #839496;
  border: 1pt solid #586e75;
  padding: 1em;
  box-shadow: 5pt 5pt 8pt #073642;
}

pre code {
  background-color: #002b36;
}

h1 {
  font-size: 2.4em;
}

h2 {
  font-size: 2.0em;
}

h3 {
  font-size: 1.4em;
}

h4 {
  font-size: 1.2em;
}

.navbar {
  background: #480032 !important;
  color: #DDD !important;
}

.active a {
  background: #58003D !important;
  color: #EEE !important;
}

.nav a:hover {
  color: #EEE !important;
}

.nav .open a {
  background: #58003D !important;
  color: #EEE !important;
}

.nav .open a:hover {
  background: #610043 !important;
  color: #FFF !important;
  font-weight: bold;
}

.footer {
  background: #58003D !important;
  color: #DDD !important;
  width: calc(100% - 2em) !important;
}

.from_name {
  color: #FFF !important;
  font-weight: bold;
}