/**********************************
 The Apache Software Foundation

Derived from: Open for Business Project Website

 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.
*********************************/

/********************************
 Global Reset
********************************/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
    border:0;
    margin:0;
    outline:0;
    padding:0;
    background:transparent;
    vertical-align: baseline;
}

blockquote, q {
    quotes: none;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
    content:'';
    content: none;
}

a, address, body, caption, cite, code, dfn, em, strong, th, var {
    font-style: normal;
    font-weight: normal;
    text-decoration: none;
}

strong {
    font-weight: bold;
}

em {
    font-style: italic;
}

a img {
    border: none;
}

ol, ul {
    list-style: none;
}

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

/********************************
 General Layout
********************************/
* {margin:0;padding:0;}

html, body, #wrap {height: 100%;}

body > #wrap {height: auto; min-height: 100%;}

body {
    font: 13px/ 165% "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
	color: black;
	margin: 0;
	padding: 0;
	background: url(/theme/images/lucene/bg.png) top left repeat-x #A6A6A6;
	text-align: center;
}

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}

.clearfix {
    display: block;
}

.clearLeft {
    clear:left;
}

/********************************
 Typography
********************************/
a,a:active,a:link {
	text-decoration: none;
	color: #29456b;
	background: #EEFFE0;
	border: 1px solid #FFFFFF;
}

a:visited {
	text-decoration: none;
	background: #EEFFE0;
	border: 1px solid #FFFFFF;
}

a:hover {
	color: #030d1c;
	background: #EEFFE0;
	border: 1px solid #9DED9D;
}

h1,h2,h3 {
	font-family: "Trebuchet MS", Tahoma, Arial, Sans-serif;
	color: #555;
}

h1 {
  	font-size: 150%;
	color: #895F30;
	padding: 20px 10px 5px 10px;
	margin: 0;
}

h2 {
	font-size: 170%;
	font-weight: normal;
	padding: 20px 10px 5px 10px;
	margin: 0;
}

h3 {
	font-size: 130%;
	font-weight: normal;
	padding: 20px 10px 5px 10px;
	margin: 0;
}

p,dl {
	padding: 10px;
	margin: 0;
}

ul{
	margin: 10px 10px;
	padding: 0 0 0 10px;
}

ul {
	list-style: none;
}

ol {
	margin: 10px 30px;
	padding: 0;
}

dt {
	font-weight: bold;
	color: #b13f1a;
}

dd {
	padding-left: 25px;
}

/********************************
 /theme/images
********************************/
img {
    border: none;
}

p img {
    background: #fafafa;
       border: 1px solid #dcdcdc;
    padding: 5px;
    margin:0 10px 0 0;
}

p img.solrlogo {
  background: none;
  border: none;
}

img.float-right {
    margin: 5px 0px 10px 10px;
}

img.float-left {
    margin: 5px 10px 10px 0px;
}

/********************************
 Code Snippets and Quotes
********************************/
code {
    padding: 2px 4px;
    text-align: left;
    overflow: auto;
    font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace;
    /* white-space: pre; */
    border: 1px solid #ECF8FE;
    background: #ECF8FE;
    border-radius: 4px;
}

acronym {
    cursor: help;
    border-bottom: 1px dotted #895F30;
}

blockquote {
    margin: 15px 10px;
    padding: 10px 10px 10px 35px;
    border: 1px solid #ECF8FE;
    background: #ECF8FE url(/theme/images/lucene/quote.jpg) no-repeat 10px 10px;
    font-weight: normal;
    font-size: 1.5em;
    line-height: 1.5em;
    font-style: italic;
    font-family: "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #976957;
}

/********************************
 Tables
********************************/
table {
	border-collapse: collapse;
	margin: 15px 10px;
}

th {
	background: #d14b1f url(/theme/images/lucene/header-bg.jpg) repeat-x 0 -100px;
	height: 38px;
	padding-left: 12px;
	padding-right: 12px;
	color: #fff;
	text-align: left;
	border-left: 1px solid #d14b1f;
	border-bottom: solid 2px #fff;
}

tr {
	height: 34px;
}

td {
	padding-left: 11px;
	padding-right: 11px;
}

/********************************
 Forms
********************************/
input,select {
    padding: 4px;
    font: normal 1em Verdana, sans-serif;
    color: #666666;
    background: #fff;
}

textarea {
    width: 400px;
    padding: 4px;
    font: normal 1em Verdana, sans-serif;
    height: 100px;
    display: block;
    color: #666666;
}

input,textarea,select {
    background: #fff;
    border-width: 1px;
    border-style: solid;
    border-color: #D4D4D4 #ebebeb #ebebeb #d4d4d4;
}

input.button {
    font: bold 12px Arial, Sans-serif;
    height: 30px;
    margin: 0;
    padding: 2px 3px;
    color: #555;
    background: #E6E6E6;
    border-width: 1px;
    border-style: solid;
    border-color: #ebebeb #d4d4d4 #d4d4d4 #ebebeb;
}

/********************************
 Generic Classes
********************************/
.float-left {
    float: left;
}

.float-right {
    float: right;
}

.align-left {
    text-align: left;
}

.align-right {
    text-align: right;
}

.clearer {
    clear: both;
}

/********************************
 Page Layout
********************************/
#wrap{
    background: #fff url(/theme/images/lucene/wrapper.jpg) top center no-repeat;
    width: 945px;
	margin: 0 auto;
    text-align:left;
}

#content-wrap  {
    width:945px;
	margin:0 auto;
    padding-bottom: 42px;
}

#content {
    width:500px;
	float:left;
	padding:30px 0 25px 0;
}

/********************************
 Footer
********************************/
#footer {
  position: relative;
	height: 100px;
	clear:both;
	font-size:11px;
	font-family:Verdana, Arial, sans-serif;
  width:945px;
  border-top: 1px solid #eee;
  background-color:#FFFFFF;
}

#foot {
    text-align:left;
    position:relative;
    top:5px;
    left:30px;
}

/********************************
 Header
********************************/
#header {
    position: relative;
    width: 945px;
    height: 100px;
    padding: 0;
    margin: 0 auto;
    background: transparent;
}

#header #logo {
    position: absolute;
    top: 15px;
    left: 20px;
    height: 42px;
    width: 405px;
}

#header #logo a,img {
    background: none;
    border: none;
}

#header #controls {
    position: absolute;
    top: 60px;
    right: 32px;
    height: 42px;
    color: #1b78d7;
    font-size: 12px;
    background: url(/theme/images/lucene/house.gif) top right no-repeat;
    padding-right: 20px;
    text-align: right;
}

#header #controls a {
    position: relative;
    top: -2px;
}

#header #language {
    position: absolute;
    top: 10px;
    right: 32px;
    height: 42px;
    color: #797c7e;
    text-align: right;
}

/********************************
 Search
********************************/
#search {
    position:absolute;
    top:0px;
    right:0px;
    background:url(/theme/images/lucene/search.gif) center left no-repeat;
	padding:5px;
	padding-top:4px;
    padding-left:33px;
	border-radius:3px;
	background-color:#444;
}

#search input[type="search"] {
  width: 24em;
}

.hintText {
      display: none;
}

.fieldWithHint {
      color: #001f2f;
}

/********************************
 Top Navigation
********************************/
#nav {
    position: absolute;
    clear: both;
    margin: 0;
    padding: 0;
	padding-right:5px;
	padding-left:5px;
	right:0px;
    height: 34px;
    top: 92px;
	border-radius:3px;
    z-index: 99999;
	background-color:#444;
}

#nav ul {
    float: left;
    list-style: none;
    height: 32px;
    margin: 0;
    padding: 0;
    display: inline;
    background:#444;
}

#nav ul li {
    display: inline;
    margin: 0;
    padding: 0;
    background:#444;
}

#nav ul li a {
    float: left;
    margin: 0 0 0 0;
    padding: 0px 15px 0px 15px;
    font: normal 14px/ 34px "Trebuchet MS", Helvetica, Arial, Geneva, sans-serif;
    font-variant: small-caps;
    text-decoration: none;
    letter-spacing: 0.0px;
    color: #fff;
    border: none;
	border-right:1px inset #888;
    background: #444;
}

#nav ul li a.last {
	border-right:none;
}

#nav ul li a:hover,#nav ul li a:active {
    color: #111;
    background-image: url(/theme/images/lucene/header_hot.jpg) !important;
}

#nav ul li#current a {
    color: #333333;
    background-image: url(/theme/images/lucene/header_hot.jpg) !important;
}

/********************************
 Content Sections
********************************/
#main {
    float: left;
    width: 700px;
    padding: 0;
    margin: 0 0 0 20px;
    display: inline;
}

#main h1 {
	padding-bottom: 3px;
	margin-top: 15px;
	font: normal 3em "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
	color: #333;
	letter-spacing: -2px;
	text-transform: none;
	border-bottom: 1px solid #ebebeb;
}

#main h1 a {
	color: #333;
	text-decoration: none;
	background: none;
	border: none;
}

#main ul li {
    list-style-image: url(/theme/images/lucene/bullet.gif);
}

#col1 {
    float: left;
    width: 349px;
    padding: 0;
    margin: 20px 0 0 10px;
    display: inline;
}

#col2 {
    float: left;
    width: 349px;
    padding: 0;
    margin: 20px 0 0 10px;
    display: inline;
}

#col1 h1, #col2 h1 {
    padding-bottom: 3px;
    margin-top: 15px;
    font: normal 3em "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #666;
    letter-spacing: -2px;
    text-transform: none;
    border-bottom: 1px solid #ebebeb;
}

#main #col1 h1, #main #col2 h1 {
	border-bottom: 1px solid #ebebeb;
	color:#304C70;
	padding-bottom: 3px;
	letter-spacing: -3px;
	text-transform: none;
	font-size:30px;
}

.feature {
	margin:0px;
	padding:0px;
	height:435px;
}

.screen {
	margin:10px 0 5px 0;
	padding:0px;
	background:#fff;
	border:1px solid #eee;
	width:255px;
	height:200px;
	overflow:hidden;
}

#main .hero {
	margin:10px 0 5px 0;
	padding:0px;
	background:#fff;
	border:1px solid #eee;
	width:555px;
}

#main .highlights {
	float:right;
	width:240px;
	background:#dfe9ef;
	border:1px solid #eee;
	margin:0px 10px 0px 5px;
	display:inline;
}

#main .highlights ul li {
    list-style-image: url(/theme/images/lucene/highlight-bullet.gif);
}

#main .highlights h4 {
	padding:5px 5px 0 5px;
}

#sidebar {
    float: right;
    width: 200px;
    padding: 0;
    margin: 15px 20px 0 0;
    display: inline;
}

#sidebar h2 {
    margin-top: 10px;
    padding: 15px 5px 3px 5px;
    font: normal 2em 'trebuchet MS', Tahoma, Helvetica, Arial, sans-serif;
    color: #666666;
    letter-spacing: -.5px;
}

#sidebar ul.sidemenu {
    text-align: left;
    margin: 0px 5px 8px 0px;
    padding: 5px 0 0 0;
    text-decoration: none;
    background: url(/theme/images/lucene/dots.gif) repeat-x left top;
}

#sidebar ul.sidemenu li {
    list-style: none;
    background: url(dots.gif) repeat-x left bottom;
    padding: 4px 10px;
    margin: 0;
}

* html body #sidebar ul.sidemenu li {
    height: 1%;
}

#sidebar ul.sidemenu li a {
    text-decoration: none;
    background-image: none;
    background-color: transparent;
    border: none;
    color: #304c70;
    font-weight: bold;
    font-family: "Trebuchet MS", Tahoma, Helvetica, Arial, Sans-serif;
    font-size: 14px;
    /* letter-spacing: .5px;  */
}

#sidebar ul.sidemenu li a span {
    color: #989898;
    font-family: Georgia, "Times New Roman", Times, serif;
    font-style: italic;
    font-weight: normal;
    font-size: .8em;
}

#sidebar ul.sidemenu li a:hover {
    color: #555;
}

#sidebar ul.sidemenu ul {
    margin: 0 0 0 5px;
    padding: 0;
}

#sidebar ul.sidemenu ul li {
    background: none;
}

#sidebar .indentfirst {
    margin-left:0px;
}

#sidebar .indentsecond {
    margin-left:20px;
}

.status-item {
    margin-left: 20px;
}

/********************************
 Content Styles
********************************/
.postmeta {
    padding: 5px;
    margin: 20px 10px 15px 10px;
    font-size: 1em;
    color: #777;
    border: 1px solid #ECF8FE;
    background: #ECF8FE;
}

.postmeta .date {
    margin: 0 10px 0 5px;
}

.postmeta a.comments {
    margin: 0 10px 0 5px;
}

.postmeta a.readmore {
    margin: 0 10px 0 5px;
}

.post-info {
    font-size: .95em;
    padding-top: 3px;
    margin-left: 5px;
    color: #bababa;
}

.post-info a {
    color: #C5935C;
}

p.thumbs {
    padding: 12px 0 0 10px;
}

.thumbs img {
    position: relative;
    border: 1px solid #ebebeb;
    background: none;
    padding: 4px;
    margin: 5px;
    /* margin: 4px 7px 4px 4px; */
}

.thumbs img:hover {
    border: 1px solid #c5c5c5;
    background: none;
}

.thumbs a:hover {
    background-color: transparent;
    border: none
}

.headerlink, .elementid-permalink {
    visibility: hidden;
}

h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink {
    visibility: visible
}

.security {
    background: #ffdddd !important;
}

.news-date {
    color: darkgrey;
    font-size: x-small;
}

/********************************
 Page Specific Styles
********************************/
/*HOME*/
body#home #wrap {
	position: relative;
	width: 945px;
	margin: 0 auto;
	text-align: left;
}

body#home #header {
	position: relative;
	width: 945px;
	height: 403px;
	padding: 0;
	margin: 0 auto;
	background: transparent;
}

body#home #header #slides {
	position: absolute;
	top: 126px;
	left: 0px;
	width: 945px;
	height: 260px;
  background-color: #C4E0BA;
  -webkit-border-top-left-radius: 30px;
  -moz-border-radius-topleft: 30px;
  border-top-left-radius: 30px;
}

body#home #header #slides .slideshow {
	width:945px;
	height:260px;
	margin:0px;
	padding:0px;
}

body#home #header #slides .callout {
	position: absolute;
	top: 25px;
	left: 30px;
	font-size: 30px;
	line-height: 30px;
	color: #2b1f48;
}

body#home #header #slides .descwrapper {
	position: absolute;
	top: 175px;
	font-size: 14px;
  background-color: #2B2A38;
	width: 945px;
  height: 85px;
}

body#home #header #slides .description {
	position: absolute;
	top: 175px;
	left: 30px;
	font-size: 14px;
	line-height: 15px;
	color: #e0e0e0;
	width: 350px;
}

body#home #header #slides .descwrapper .description {
	position: relative;
	top: 15px;
	left: 20px;
	font-size: 14px;
	line-height: 18px;
	color: #e0e0e0;
	width: 380px;
}


body#home #header #slides .controls {
	width: 100px;
	position: absolute;
	top: 15px;
	left: 750px;
	height:30px;
}

body#home #header #slides .controls a {
	border: none;
	position:absolute;
	height:30px;
	line-height:24px;
	padding:5px;
	text-indent:-9999px;
	outline:none;
}

body#home #header #slides .controls a.previous {
	background: url(/theme/images/lucene/backward.gif) top center no-repeat;
	left:0px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a.next {
	background: url(/theme/images/lucene/forward.gif) top center no-repeat;
	left:60px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a.stop {
	background: url(/theme/images/lucene/pause.gif) top center no-repeat;
	left:30px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a.start {
	background: url(/theme/images/lucene/start.gif) top center no-repeat;
	left:30px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a img {
	background: none;
	border: none;
	cursor: pointer;
}

body#home #header #slides .mantle{
	position:absolute;
	top:45px;
	left:360px;
}

body#home #col1 {
	float: left;
	width: 340px;
	padding: 0;
	margin: 5px 0 0 0px;
	display: inline;
}

body#home #col2 {
	float: left;
	width: 340px;
	padding: 0;
	margin: 5px 0 0 10px;
	display: inline;
}

.downloadNow {
	margin:30px 0 10px 0;
}

.downloadLinks span.docs {
	float:left;
	margin:0px 0px 0 0;
	display:inline;
}

.downloadLinks span.previousVersions {
	float:right;
	margin:0px 20px 0 0;
	display:inline;
}

/* Lucene and Solr logos on TLP front page */
.front-logo-container {
    height:110px;
    position: relative;
    background: none;
}

.front-logo-container img {
    position: absolute;
    left: 10px;
    bottom: 5px;
}

/*SUBPAGE - NO SIDEBAR*/
body#full #wrap {
	position: relative;
	width: 945px;
	margin: 0 auto;
	text-align: left;
}

.section-content{
    border-bottom: 1px black solid;
}

div.cmd{
    background:  #d3d3d3;
    display: block;
    white-space: pre;
    vertical-align: middle;
    width: 99%;
    padding-left: 5px;
    padding-bottom: 0px;
    padding-right: 5px;
    padding-top: 0px;
}

code.inline{
    font: 0.9em;
    display: inline;
    margin: 0px 0;
    padding: 0px;
    font-weight: bold;
    background-color: white;
    border-color: white;
}


/* DOWNLOAD BUTTONS */

.download-desc {
	color: gray;
	font-size: 10px;
	margin-top: 5px;
	margin-bottom: 10px;
	margin-left: 10px;
}

.button-wrapper {
	width: 200px;
  margin-top: 3px;
	margin-bottom: 5px;
}

.button-orange a {
	border: 2px solid black;
	z-index: 1;
	position: relative;
	display: block;
	height: 50px;
	width: 200px;
	/*TYPE*/
	color: black;
	font: 24px/50px Helvetica, Verdana, sans-serif;
        font-weight: bold;
	text-decoration: none;
	text-align: center;
	text-transform: uppercase;
	/*GRADIENT*/
	background: #D9411E !important; /* Old browsers */
	background: -moz-linear-gradient(top, #C8BEB4 0%, #D9411E 100%) !important;
	/* FF3.6+ */
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #C8BEB4) !important,
		color-stop(100%, #D9411E) ); /* Chrome,Safari4+ */
	background: -webkit-linear-gradient(top, #C8BEB4 0%, #D9411E 100%) !important;
	/* Chrome10+,Safari5.1+ */
	background: -o-linear-gradient(top, #C8BEB4 0%, #D9411E 100%)important;
	/* Opera 11.10+ */
	background: -ms-linear-gradient(top, #C8BEB4 0%, #D9411E 100%) important;;
	/* IE10+ */
	background: linear-gradient(top, #C8BEB4 0%, #D9411E 100%) !important; /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient(  startColorstr='#C8BEB4',
		endColorstr='#D9411E', GradientType=0 ); /* IE6-9 */
}

.button-green a {
	border: 2px solid black;
	z-index: 1;
	position: relative;
	display: block;
	height: 50px;
	width: 200px;
	/*TYPE*/
	color: black;
	font: 24px/50px Helvetica, Verdana, sans-serif;
        font-weight: bold;
	text-decoration: none;
	text-align: center;
	text-transform: uppercase;
	/*GRADIENT*/
	background: #14A800 !important; /* Old browsers */
	background: -moz-linear-gradient(top, #89FA7A 0%, #1AA807 100%) !important;
	/* FF3.6+ */
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #89FA7A) !important,
		color-stop(100%, #1AA807) ); /* Chrome,Safari4+ */
	background: -webkit-linear-gradient(top, #89FA7A 0%, #1AA807 100%) !important;
	/* Chrome10+,Safari5.1+ */
	background: -o-linear-gradient(top, #89FA7A 0%, #1AA807 100%) !important;
	/* Opera 11.10+ */
	background: -ms-linear-gradient(top, #89FA7A 0%, #1AA807 100%) !important;
	/* IE10+ */
	background: linear-gradient(top, #89FA7A 0%, #1AA807 100%) !important; /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient(  startColorstr='#14A800',
		endColorstr='#1AA807', GradientType=0 ); /* IE6-9 */
}

.button-orange a,.flap {
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	-webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
	-moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
	box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
}

.button-green a,.flap {
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	-webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
	-moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
	box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
}

.flap {
	background: #222;
	display: block;
	height: 40px;
	width: 180px;
	margin: -50px 0 0 10px;
	/*TYPE*/
	text-align: center;
	font: 12px/45px Helvetica, Verdana, sans-serif;
	color: #fff;
	/*POSITION*/
	position: absolute;
	z-index: 0;
	/*TRANSITION*/
	-webkit-transition: all 0.5s ease;
	-moz-transition: all 0.5s ease;
	-o-transition: all 0.5s ease;
	-ms-transition: all 0.5s ease;
	transition: all 0.5s ease;
}

/*HOVER*/
.button-orange:hover .bottom {
	margin: -10px 0 0 10px;
}

.button-green:hover .bottom {
	margin: -10px 0 0 10px;
}

.button-orange:hover .top {
	margin: -80px 0 0 10px;
	line-height: 35px;
}

.button-green:hover .top {
	margin: -80px 0 0 10px;
	line-height: 35px;
}

/*ACTIVE*/
.button-orange a:active {
	background: #D9411E; /* Old browsers */
}

.button-green a:active {
	background: #14A800; /* Old browsers */
}

.button-orange:active .bottom {
	margin: -20px 0 0 10px;
}

.button-green:active .bottom {
	margin: -20px 0 0 10px;
}

.button-orange:active .top {
	margin: -70px 0 0 10px;
}

.button-green:active .top {
	margin: -70px 0 0 10px;
}
