/*
* 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.
*/
iframe {
	width: 100%;
	min-height: 700px;
}
/* need to be removed on bootstrap update */
.bs-callout+.bs-callout {
	margin-top: -5px;
}
.bs-callout {
	padding: 20px;
	margin: 20px 0;
	border: 1px solid #eee;
	border-left-width: 5px;
	border-radius: 3px;
	position: relative;
}
.bs-callout-info {
	border-left-color: #5bc0de;
}
.bs-callout-info b {
	color: #5bc0de;
}
.bs-callout-danger {
	border-left-color: #d9534f;
}
.bs-callout-danger b {
	color: #d9534f;
}
.bs-callout span {
	display: block;
	margin-bottom: 5px;
}
.bs-callout span b {
	display: inline-block;
}
.bs-callout b {
	display: block;
	margin-top: 0;
	margin-bottom: 5px;
	font-size: 18px;
	margin-top: 10px;
	margin-bottom: 10px;
	font-family: inherit;
	font-weight: 500;
	line-height: 1.1;
}
.bs-callout span:last-child {
	margin-bottom: 0;
}
.bs-callout span.date {
	display: inline-block;
	position: absolute;
	top: 10px;
	right: 20px;
}
#bannerRight img, #bannerLeft img {
	height: 80px !important;
}

/* Call for logo, need to be removed*/
.powered-preview {
	background-repeat: no-repeat;
	background-image: url('../images/logos/pb.png');
	background-position: 0 0;
	background-size: 200px 200px;
	width: 200px;
	height: 200px;
	position: relative;
}
.powered-preview-logo {
	background-repeat: no-repeat;
	background-position: 0 0;
	background-size: 70px 70px;
	position: absolute;
	height: 70px;
	width: 70px;
	top: 65px;
	left: 65px;
}
.example-image-link {
	display: block;
}
