/**********************************
 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 {
	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
lucene/********************************/
img {
    border: none;
}

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

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

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

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

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;
	margin: -50px auto 0px auto;
	height: 100px;
	clear:both;
	font-size:11px;
	font-family:Verdana, Arial, sans-serif;
    width:945px;
    border-top: 1px solid #eee;
}

#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: 34px;
    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 3.5em "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: 260px;
    padding: 0;
    margin: 20px 0 0 20px;
    display: inline;
}

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

#col1 h1, #col2 h1 {
    padding-bottom: 3px;
    margin-top: 15px;
    font: normal 3.5em "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;
}

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

/********************************
 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;
}

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

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

body#home #header #slides .descwrapper {
	position: absolute;
	top: 175px;
	font-size: 14px;
	line-height: 15px;
    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: 15px;
	color: #e0e0e0;
	width: 350px;
}

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:58px;
	left:385px;
}

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

body#home #col2 {
	float: left;
	width: 260px;
	padding: 0;
	margin: 5px 0 0 20px;
	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;
}

/*SUBPAGE - NO SIDEBAR*/
body#full #wrap {
	position: relative;
	background: #fff url(/theme/images/full-wrapper.jpg) top center no-repeat;
	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;
}
