/**
* @@@ START COPYRIGHT @@@  
*
* 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.
*
* @@@ END COPYRIGHT @@@ 
 */
@import url(https://fonts.googleapis.com/css?family=Oswald:400,300);

.brand-apache {
        color: white;
        font-family: 'Oswald',sans-serif; font-weight; 300;
        font-size: 20px;
}

.brand-trafodion {
        color: white;
        font-family: 'Oswald',sans-serif; font-weight; 400;
        font-size: 30px;
}

.logo-right {
    position: absolute;
    top: 20%;
    right: 150px;
}

.color-highlight {
	color: red;
}

body {
	background-image:url(../images/bg.png);
}

body[class*="page-themes-bootswatch"] {
	background-image: none;
}

body[class*="page-themes-bootswatch"] .color-highlight {
	color: inherit;
}

.thumbnail-row {
	margin-top: 10px;
}

h1 {
  margin-top: 50px;
  color: #1a334c;
  border-bottom: 1px gray;
  width:100%; 
}

h2 {
  margin-top: 30px;
}

h3, h4, h5, h6 {
  margin-top: 20px;
}

.customHr {
    width: 90%
    font-size: 1px;
    color: grey;
    line-height: 1px;

    background-color: grey;
    margin-top: -6px;
    margin-bottom: 10px;
}

/* Override the default static position to ensure correct placement on small screens */
/* Bottom gives space between the box and the following text. */
.carousel-caption {
  position: relative;
  bottom: 5px;
}

/* Color of the heading in the text box */
.carousel-caption a {
  color: white;
}

/* A bit of workaround for links being not clickable due to :before element in headings */
.project-reflow-parent.page-index h2[id]:before {
  height: 30px;
  margin-top: -30px;
}

.project-reflow-parent.page-index .sidebar {
  margin-top: 10px;
}

.project-reflow-parent.page-index .sidebar {
  margin-top: 10px;
}

.project-reflow-parent.page-index .sidebar h3 {
  margin-top: 10px;
}

@media (min-width: 980px) {
  .page-themes-bootswatch-readable .navbar.affix {
    top: 60px;
  }

  .page-themes-bootswatch-cerulean .navbar.affix {
    top: 50px;
  }

  .page-themes-bootswatch-spruce .navbar.affix {
    top: 55px;
  }

}


