/*
 * Copyright 2000-2013 JetBrains s.r.o.
 *
 * Licensed 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.
 */
body {
    margin-left: 10px;
    margin-right: 2px;
    margin-bottom: 6px;
}
h1, p, ul {
   font-family: 'MS Reference Sans Serif', verdana, arial, sans-serif;
}
.code, .code_emphasis, .code_keyword, pre, .shortcut {
    font-family: 'Lucida Console', monospace;
}
h1, p, pre, ul {
    font-size: 10px;
    /*color: #3f3f3f;*/
}
p, ul {
    margin-top: 6px;
}
h1, p, ul {
    margin-bottom: 0;
}
ul {
    margin-left: 0;
    padding-left: 14px;
}
h1, .image, pre {
    margin-top: 10px;
}
.image, pre {
    margin-bottom: 2px;
}
pre {
    margin-right: 6px;
    border-style: solid;
    border-width: 1px;
    border-color: #d0d0d0;
    background-color: #fbfbfb;
    padding-left: 10px;
    padding-top: 6px;
    padding-bottom: 6px;
}
.control, h1 {
    font-weight: bold;
}
.control {
    color: #d19a67;
}
.caret, .code_emphasis, .code_keyword, .emphasis, .shortcut {
    color: #cb7d4a;
    font-weight: bold;
}
pre .keyword{
    color: #cb7832;
}
h1 .product {
    color: #5275d0;
}
h1 .version {
    color: #f58220;
}